您当前的位置: 首页 >  vr

暂无认证

  • 12浏览

    0关注

    93840博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

发布时间:2022-07-06 22:21:44 ,浏览量:12

【背景】

上一篇帖子我们介绍到让手臂和头部都能做自然的运动,但从人物的整个骨架来说,还存在问题,如果你把整个手臂或头部挪动到另一个位置,那么身体并不会跟着合理地移动,你会看到拉长了的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,发现整个身体都会随着身体移动或者旋转。目的达成。

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

微信扫码登录

0.2352s