最近在尝试做纪念碑谷的效果,在墙上行走的功能上出现了一些问题,我使用了transform.TransformDirection(Vector3.up)来标记角色的上面,好让角色不管怎么旋转可以始终标明他的头顶,通过Quaternion.LookRotation方法实现垂直上墙。但是实际运行起来的时候,一开始的旋转没有出现任何问题,角色可以正常在垂直的墙上行走,debug输出的TransformDirection(Vector3.up)正常的由(0,1,0)变为(1,0,0)(因为角色与所在的方块绕z轴旋转了90度),但当我继续往上面行走的时候,输出的角度开始错误,角色也因此歪了过去,TransformDirection(Vector3.up)开始变为(0.6,0,0.8)或者是(0.7,0,0.7),经过各种测试后发现只要角色在这个平面上向上行走TransformDirection(Vector3.up)的值就会出错,但我查到的资料来看这个值应该只会将(0,1,0)转化到角色的坐标上来,因此没有想明白这个错误出现的原因。

关于TransformDirection的一些疑问
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 小鱼游戏开发 2022-02-08 14:28关注
官方解释 TransformDirection 是 将方向从局部空间转换到世界空间
局部方向:这个方向并非是世界方向如Vector3.right,Vector3.up之类的,而是 对象A - 对象B 得出或者其他方式计算出来的方向
然而你输入的却是一个世界方向。这是不正确的
如果你需要对象上方的方向,那么你需要的仅仅是transform.up
如果你需要对象上方的坐标,你可以简单的 transform.position + transform.up * distance 得到头顶的坐标本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报