您当前的位置: 首页 >  vr

每日出拳老爷子

暂无认证

  • 10浏览

    0关注

    135博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Unity】【VR】如何让人物的整个骨架随人物的动作自然联动

每日出拳老爷子 发布时间:2022-07-06 22:21:44 ,浏览量:10

【背景】

上一篇帖子我们介绍到让手臂和头部都能做自然的运动,但从人物的整个骨架来说,还存在问题,如果你把整个手臂或头部挪动到另一个位置,那么身体并不会跟着合理地移动,你会看到拉长了的Mesh,显得很怪异,如果真的就这样放到VR游戏中,你会看到自己会变成怪异的长手长脚。这篇帖子,我们来解决这个问题。 在这里插入图片描述

【解决步骤】

在Hierarchy的人物Root对象下新建一个脚本,命名为VR Rig: 在这里插入图片描述 脚本中写如下内容:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class VRRig : MonoBehaviour
{
    public Transform headConstraint;
    public Vector3 headBodyOffset;
    // Start is called before the first frame update
    void Start()
    {
        headBodyOffset = transform.position - headConstraint.position;
    }

    // Update is called once per frame
    void LateUpdate()
    {
        transform.position = headConstraint.position + headBodyOffset;
        transform.forward = Vector3.ProjectOnPlane(headConstraint.up, Vector3.up).normalized;
    }
}
【代码解析】

headConstraint和headBodyOffset分别用来关联头部移动标记的方位和实际骨架头部方位的差向量Offset。 在Start中,我们获得headBodyOffset 的初始值为骨架位置(身体位置)-头部标记位置。 在LateUpdate中我们通过补正头部标记位置来获得实际自然的身体位置. 最后一行是为了计算投射的身体方向。(位置+方向才能得到完整的身体信息)。

【测试结果】

运行游戏,试着唯一Head的Target,发现整个身体都会随着身体移动或者旋转。目的达成。

关注
打赏
1657016083
查看更多评论
立即登录/注册

微信扫码登录

0.3518s