我的玩家不尊重盒子对撞机

My player doesn't respect the box collider

我正在为播放器(红色立方体)编程...在我的场景中有很多墙...不幸的是我的播放器穿过墙...我该如何解决?

这是我的脚本 (js):

  #pragma strict

    function Start () {

    }

 function Update () {


   if(Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A)) {
    transform.Translate(Vector3.left * Time.deltaTime);


 }

    if(Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D)) {
        transform.Translate(Vector3.right * Time.deltaTime);


   }
       if(Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W)) {
           transform.Translate(Vector3.forward * Time.deltaTime);


   }
     if(Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S)) {
       transform.Translate(Vector3.back * Time.deltaTime);



    }


   }

我的玩家有一个盒子碰撞器,我的墙也有一个……(他没有触发)……

Rigidbody 附加到您的播放器 gameobject

要使碰撞在 Unity 中起作用,其中一个碰撞对象需要附加 RigidbodyRigidbody 通常附加到非静态的 gameobject。在您的情况下,您的播放器 gameobject 是非静态的,需要附加一个 Rigidbody 才能处理碰撞。

直觉上,Colliders 和 RigidBody 之间的区别可以认为如下。

物理计算是在另一个世界完成的,也就是说,物理引擎有自己的世界,所有calculations/simulations都在那里完成。 Colliders 实际上为物理模拟器提供信息(作为信息输入),而 RigidBodys 在另一侧充当输出管道。

+-----------+
|   +---+   |  input
|   | A |---|---------->   
|   +---+   |
|           |             Physics Calculation World
|   +---+   |  output
|   | B |<--|-----------
|   +---+   |
+-----------+

这张图中,A只是一个碰撞器,B有一个刚体。

  • input:向物理计算世界发送物理相关信息。 (被动行动)
  • output:提供来自物理世界的信息并将它们应用到游戏对象。 (积极行动)

因此,我们可以总结如下:

  • Collider:物理模拟的被动/信息提供者。
  • RigidBoy:活动/将物理计算结果应用于游戏对象。