首页 > 解决方案 > 如何根据表面获得正确的运动方向矢量

问题描述

所以我正在尝试编写我自己的第三人称角色控制器,并且我正在尝试找到一种方法来根据接触面法线和玩家的方向向量(transform.forward)来计算方向向量 矢量图 我已经附上了图像,所以它更清楚

标签: unity3dvectordirection

解决方案


在我回答之前,我想问你为什么需要这个向量?你想用它做什么?

与此同时,这是一种方法:

  1. 从玩家的位置向下Physics.Raycast(player.transform.position, Vector3.Down, out hit, Mathf.Infinity, groundLayerMask)进行光线投射(可能从玩家中间进行光线投射,以确保您不会错过地面)
  2. 如果你没有命中,这意味着从玩家的位置来看,没有地面(因此,没有要计算的向量)
  3. 如果您确实受到打击,它将包含 a hit.normal,然后您可以乘以 Quaternion.Euler(90, 0, 0)- 这实际上会将地面的法线在 X 轴上旋转 90 度,得到您正在寻找的归一化向量

推荐阅读