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

关于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日

悬赏问题

  • ¥20 想写一个文件管理器,加载全部子文件夹后,要一级一级返回
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?
  • ¥15 请问GPT语言模型怎么训练?
  • ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角
  • ¥15 webots有问题,无响应
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?