我正在构建一条可步行的路径,该路径由游戏对象(胶囊)使用射线投射向下检查,每个立方体都有一个方向,以正确的方式移动胶囊。问题是胶囊立即移动,射线投射击中了立方体,因此胶囊沿着边缘但居中移动。
这是我使用的代码
RayDirection = (direction) => new Ray(transform.position, direction);
if (Physics.Raycast(RayDirection(-transform.up), out RaycastHit hit, 1.5f, 1 << 9))
{
switch (hit.transform.GetComponent<Path>().path)
{
case Path.Forward:
transform.position += Vector3.forward / 50;
break;
case Path.Back:
transform.position += Vector3.back / 50;
break;
case Path.Right:
transform.position += Vector3.right / 50;
break;
case Path.Left:
transform.position += Vector3.left / 50;
break;
}
}
答案 0 :(得分:0)
您可以让它们包含出口位置,而不是让路径元素包含方向。可以在设计器中通过一个空对象设置此值,也可以在初始化路径对象时进行计算。
然后在射线投射中,您可以获取该出口位置并将角色朝该方向移动。
在查看时,您似乎在使用“ / 50”来减慢运动速度。这可以通过向角色添加Speed变量(以米/秒为单位)来完成。要移动角色,请乘以移动方向*速度* Time.DeltaTime(以考虑不同的帧速率)。