我无法检测到玩家面前的碰撞

时间:2014-12-12 19:34:51

标签: c# unity3d

基本上如果玩家面前发生碰撞,它就不应该继续前进,但无论如何,玩家都会前进。

if (Input.GetAxis("Vertical") > 0 &&
        !(Physics.Raycast(PlayerObject.transform.position,
                          Vector3.forward,
                          PlayerObject.collider.collider.bounds.size.z * 1.05f)))
    {
        PlayerObject.transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);
    }

1 个答案:

答案 0 :(得分:1)

这里的问题是你使用物理学执行Raycast,所以任何未启用物理学的东西都不会出现。您还使用Vector3.Forward代替PlayerObject.transform.forward,因此您获得了全局转发(0,0,1)而不是播放器的实际向量。此外,但是使用玩家的位置,它不会注意到,例如,低矮或高悬的墙。

请注意,还有内置的CharacterController组件来处理这种行为,以及智能处理Ramps和Steps。