2017-03-16 2 views
5

안녕하세요 모두가 여기에 :) 상황이다 : 나는 두 개의 입자 가속기의 구성 요소가 이는 baddy 블 조립식이조립식 Collider2D 레이 캐스트 충돌 장치로 인식되지

: 물리학에 사용되는 간단한 CapsuleCollider2D 및 트리거는 마우스 포인트 충돌에만 사용 PolygonCollider2D .

PolygonCollider2D은 첨부 된 스크립트를 사용하여 필요한 경우에만 (Baddy.cs)를 통해 업데이트됩니다

if(this.gameObject.GetComponent<PolygonCollider2D>()!=null){ 
    Destroy(this.gameObject.GetComponent<PolygonCollider2D>()); 
} 
this.gameObject.AddComponent<PolygonCollider2D>(); 
this.gameObject.GetComponent<PolygonCollider2D>().isTrigger=true; 

예,이 가난한 연습이지만, 작업이 이루어집니다 얻을. 그것은 완벽하게 작동합니다 : 게임의 장면보기에서 나는 멈출 수 있고 참으로 우리 badiff 조립식에 polygon collider가 있음을 볼 수 있습니다. 또 다른 연결 스크립트 (CollisionHandler.cs) 우리는 우리의 baddy 블에 마우스를 눌러 확인에서

는 :

if(MousePress()){ 
    hit=Physics2D.Raycast(level.mousePoint, Vector2.zero, 0f); 
    if(hit&&hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()){ 
     print("baddy mousePress"); 
    } 
} 

그러나 hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()는 거짓 판명 나는 즉시 손 전에 두 hit.colliderthis.gameObject.GetComponent<PolygonCollider2D>()를 인쇄 할 수에도 불구하고 우리의 if(MousePress()) 그들 모두는 다음과 같이 정의 : 한 번에 하나있을 수 있기 때문에 우리 baddy 블 스크립트 remov 때문에,

D_Prefab(Clone) (UnityEngine.PolygonCollider2D) 

그들은 수 없습니다 다른 PolygonColliders 동시에 PolygonCollider를 생성합니다.

어떤 아이디어가 잘못 될 수 있습니까?

답변

2

Physics2D.RaycastAll을 layerMask와 함께 사용하여 baddy 자신의 capsuleCollider2D를 포함하여 다른 충돌 자의 문제를 해결했습니다. 다행히도, 마우스 충돌을 확인할 필요가 있기 전에 내 baddys가 멈출 것입니다. 그래서 baddy의 anim 속도가 0 일 때 미리 collider를 업데이트했습니다. 업데이트 함수를 통해 collider를 만들고 제거하는 것은 시스템에 충분한 시간을주지 않습니다. 충돌.

http://answers.unity3d.com/questions/1326583/prefab-collider2d-not-recognized-as-raycast-collid.html#comment-1327337