CharacterController 的对撞机不会与 BoxCollider2D 发生碰撞

CharacterController's collider doesn't collide with BoxCollider2D

我的场景中有一个播放器和一个平台。场景是二维的。

这是平台的组件:

这里是玩家的组件:

[]

要移动播放器 - 我使用 SimpleMove() 方法:

CharacterController controller;

    public float speed = 3.0F;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        float movement = Input.GetAxis("Horizontal");
        Vector2 movementVector = new Vector2(movement, 0f);

        controller.SimpleMove(movementVector * speed);
    }

恐怕您要实现的目标无法按预期工作。 Character Controller 实际上是为 3D 而设计的,您期望它与工作方式不同且最重要的是不兼容的 2D 碰撞器发生碰撞

角色控制器为其对象带来 3D 胶囊碰撞器 - 请参阅 https://docs.unity3d.com/Manual/class-CharacterController.html

您可以尝试添加一些 2D collider 并最终将 RigiBody2D 添加到您的对象中。角色控制器也适用于不使用物理的情况(碰撞除外),因此如果您的 2D 游戏也是这种情况,那么创建自己的角色控制器也可能是非常直接的选择