2017-03-01 25 views
0

我有一个跳跃向前的球员。我在路上也有树。当玩家试图向后或侧身移入树中时,我不能。但是,当我向前移动时,我直接穿过物体并向侧面移动。我检查与硬币和汽车的碰撞,这两个工作只是与我横过的树木一起工作。为什么玩家只有在向前移动时才会穿过物体?

void OnTriggerEnter (Collider col) { 

else if (col.gameObject.name == "tree1(Clone)" || col.gameObject.name == "tree2(Clone)" || 
       col.gameObject.name == "tree3(Clone)" || col.gameObject.name == "tree4(Clone)") { 
     charController.canMove = false; 
     if (gameObject.name == "LeftCollider" && charController.lastJump == JumpDirection.left) { // left collider 
      charController.endPosition.z -= CharController.jumpDistance; 
     } else if (gameObject.name == "RightCollider" && charController.lastJump == JumpDirection.right) { // right collider 
      charController.endPosition.z += CharController.jumpDistance; 
     } else if (gameObject.name == "FrontCollider" && charController.lastJump == JumpDirection.up) { // front collider 
      charController.endPosition.x -= CharController.jumpDistance; 
      environmentMaker.collideFront = true; 
      environmentMaker.charRoadPos--; 
     } else if (gameObject.name == "BackCollider" && charController.lastJump == JumpDirection.down) { // back collider 
      charController.endPosition.x += CharController.jumpDistance; 
     } 

正面/左面/右面/背面/对撞机只是我的玩家前面的物体。

+0

还值得注意的是,不要指定每个可能的对象,你不想让你移动通过你可以检查对象的标签。如果你创建一个名为“Trees”的标签,它只是一张支票。 if(col.gameobject.tag ==“Trees”){charController.canMove = false;} –

回答

0

你只是使用Bounds而不是制造许多对撞机。

3

如果您希望您的对象不会从其他对象传递过来,那么您应该使用colldier而不使用isTrigger检查(isTrigger应该为false)并使用OnCollisionEnter事件代替OnTriggerEnter。

相关问题