unity3d - 如何根据表面获得正确的运动方向矢量
问题描述
所以我正在尝试编写我自己的第三人称角色控制器,并且我正在尝试找到一种方法来根据接触面法线和玩家的方向向量(transform.forward)来计算方向向量 我已经附上了图像,所以它更清楚
解决方案
在我回答之前,我想问你为什么需要这个向量?你想用它做什么?
与此同时,这是一种方法:
- 从玩家的位置向下
Physics.Raycast(player.transform.position, Vector3.Down, out hit, Mathf.Infinity, groundLayerMask)
进行光线投射(可能从玩家中间进行光线投射,以确保您不会错过地面) - 如果你没有命中,这意味着从玩家的位置来看,没有地面(因此,没有要计算的向量)
- 如果您确实受到打击,它将包含 a
hit.normal
,然后您可以乘以Quaternion.Euler(90, 0, 0)
- 这实际上会将地面的法线在 X 轴上旋转 90 度,得到您正在寻找的归一化向量
推荐阅读
- javascript - Android 上的 Quasar 错误:无法加载 ip:port 处的网页,因为 net::ERR_ADDRESS_UNREACHABLE
- triggers - 仅通过推入主设备触发挂钩
- shell - 是否使用 `eval` 来定义带有来自文件邪恶的文本的函数?
- python - 更改堆叠数据框熊猫中的行顺序
- c++ - 在 Xcode 10 中找不到 -lstdc++.6 的库
- c# - 选择 Tag Helper 混淆
- decoder - 在维特比前向阶段计算分支度量
- matlab - 如何在 Matlab 中显示没有科学计数法的长数字?
- javascript - React - Checkbox select all
- c++ - 注册可加载、注册和卸载的C++服务实现库的最佳方式