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

本文关键字:碰撞 玩家 检测 | 更新日期: 2023-09-27 18:34:12

基本上,如果玩家面前有碰撞,它不应该再前进了,但玩家无论如何都会前进。

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);
    }

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

这里的问题是你正在使用物理执行Raycast,所以任何未启用物理的东西都不会显示。您还使用Vector3.Forward而不是PlayerObject.transform.forward,因此您将获得全局前向(0,0,1)而不是玩家的实际向量。此外,但是使用玩家的位置,它不会注意到,比如说,低矮或高悬的墙。

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