2017-03-01 5 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"というタグを作成した場合は、1つのチェックになります。 if(col.gameobject.tag == "Trees"){charController.canMove = false;} –

答えて

0

あなたは単に多くのコライダーを作る代わりにBoundsを使用しています。

3

オブジェクトが他のオブジェクトから渡されないようにするには、isTriggerチェック(isTriggerはfalseにする必要があります)を使わずにcolldierを使用し、OnTriggerEnterの代わりにOnCollisionEnterイベントを使用する必要があります。

関連する問題