我是Unity3D的新手,碰撞检测有问题。如果我通过射线投射撞到障碍物并阻止该方向的移动,我想返回true。当我在障碍物前面面对面时,效果很好。当我改变方向并且我在障碍物的前面(但是具有另一个面部方向)时,它返回false并且我仍然可以在所有方向上移动(它应该像在第一张图片上看到的那样阻止“向上”移动)。 任何提示将不胜感激!
当障碍物在我们前面并且我们不能“向上”移动时返回true
当障碍物位于我们的左侧或右侧时,返回false
错误操作后玩家被阻止
这是我的代码示例:
void Update()
{
Ray myRay = new Ray(transform.position, Vector3.right);
Debug.DrawRay(transform.position, Vector3.right, Color.red);
if (Physics.Raycast(myRay, out hit, 1.5f))
{
if (hit.collider.gameObject.tag == "TerrainObject")
{
Debug.DrawRay(transform.position, Vector3.right, Color.blue);
upHit = true;
}
}
else
upHit = false;
...
}
答案 0 :(得分:2)
如评论中所述,您需要增加光线投射的起始高度。
使用Ray myRay = new Ray(transform.position+new Vector3(0f,0.15f,0f), Vector3.right);
从地面上方一点点广播。