树洞中的狐狸 2022-02-08 10:30 采纳率: 100%
浏览 91
已结题

关于TransformDirection的一些疑问

最近在尝试做纪念碑谷的效果,在墙上行走的功能上出现了一些问题,我使用了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)转化到角色的坐标上来,因此没有想明白这个错误出现的原因。

img

img

img

  • 写回答

1条回答 默认 最新

  • 小鱼游戏开发 2022-02-08 14:28
    关注

    官方解释 TransformDirection 是 将方向从局部空间转换到世界空间
    局部方向:这个方向并非是世界方向如Vector3.right,Vector3.up之类的,而是 对象A - 对象B 得出或者其他方式计算出来的方向
    然而你输入的却是一个世界方向。这是不正确的
    如果你需要对象上方的方向,那么你需要的仅仅是transform.up
    如果你需要对象上方的坐标,你可以简单的 transform.position + transform.up * distance 得到头顶的坐标

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 创建了问题 2月8日

悬赏问题

  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀