2014-10-19 3 views
1

Unity에서 2D 게임의 트리거에 문제가 있습니다. 플레이어의 무기로 트리거 할 때 적을 죽이고 싶습니다. 문제는 적군에 부착 된 두 개의 colliders가있다 ("적"태그) :Unity OnTriggerEnter2D 가끔 작동하지 않습니다.

  • 하나는 정상 입자 가속기로 사용 Box2D의 입자 가속기는
  • 초가 트리거로 설정하고 스크립트에 사용되는 구형 입자 가속기이다 범위의 플레이어가 있는지 확인

내가 가지고 스프라이트 렌더링, 상자 입자 가속기 (트리거로 설정) 및 스크립트가 칼 객체 :

void OnTriggerEnter2D(Collider2D other) 
    { 
     if(other.tag == "Enemy") 
     { 
      if(!other.isTrigger) 
      { 
       Debug.Log ("enemy"); 
       Destroy (other.gameObject); 
      } 
     } 
    } 

Scre을 장면의 enshot : 적 게임 오브젝트의 http://i.stack.imgur.com/eVtRX.jpg

스크린 샷 : http://i.stack.imgur.com/9R5a6.jpg

그래서 일반적으로 가끔 작동하지만, 때로는하지 않습니다. 적에서 스페어 콜리더를 사용하지 않도록 설정하면 모든 것이 잘 작동하지만 범위 내에 플레이어가 있는지를 확인해야합니다. 어떻게 해결할 수 있습니까?

+1

'변형'으로 무기를 움직이고 있습니까? 'Transform'은'GameObject'를 즉시 움직이고 충돌에는 영향을 미치지 않습니다. –

+0

애니메이션을 사용하여 이동합니다 (플레이어의 손을 회전시킵니다). 나는 그것이 움직이는 것과는 아무런 관련이 없다고 생각하지만 적에게 붙은 두 명의 충돌자를 가지고 있습니다. – Przemotar

답변

3

당신은)

1 OnEnterCollider2D

에 반드시 두 가지를 확인 모두 OnEnterCollider2D에 참여하는 게임 오브젝트가 파괴되어서는 안해야한다. 파괴되어야한다면 얼마 후에 파괴되어야합니다.

2) 충돌에 참여하는 게임 개체 중 하나에 강체가 isKinematic으로 선택 해제되어 있는지 확인하십시오.