为什么我的播放器只有在向前移动时才能通过对象?

时间:2017-03-01 23:29:21

标签: c# unity3d

我有一个跳跃前进的球员。我路上也有树。当玩家试图向后或侧身移动到树上时,我无法做到。但是,当我向前移动时,我会直接穿过物体并向侧面移动。我检查了与硬币和汽车的碰撞,这两种情况都与我经过横向穿过的树木一起工作。

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

前/左/右/后/碰撞器只是我的播放器前面的物体。

2 个答案:

答案 0 :(得分:3)

如果您希望对象不从其他对象传递,则应使用colldier而不进行isTrigger检查(isTrigger应该为false)并使用OnCollisionEnter Event而不是OnTriggerEnter。

答案 1 :(得分:0)

你只是使用Bounds代替制作许多对撞机。