2017-03-18 1 views
0

J'ai des objets de jeu à l'écran et j'ai ajouté un collisionneur de polygones pour détecter une collision normale avec eux. Je voudrais ajouter un collisionneur de boîte sur leur tête pour détecter le headshot. Comment puis-je faire cela s'il vous plaît? Comment puis-je déclarer la collision avec collisionneur de boîte au lieu de collisionneur de polygone en C# s'il vous plaît?Unity 2D C# hitbox avec boxcollider

J'ai essayé cela, mais seulement le collisionneur du polygone devient détecté

void OnCollisionEnter2D(Collision2D col) { 
    if(col.gameObject.tag == "target") 
    { 
     score += 1000; 
     gameObject.SetActive (false); 
     gameObject.SetActive (true); 
     Destroy (col.gameObject); 
    } 
    else if(col is BoxCollider2D) 
    { 
     score += 2000; 
     gameObject.SetActive (false); 
     gameObject.SetActive (true); 
     Destroy (col.gameObject); 
    } 
} 
+0

J'ai mis à jour ma réponse jetez un oeil. – CNuts

Répondre

0

Vous pouvez facilement vérifier quel type de collisionneur a été frappé en ajoutant simplement dans votre cas de collision:

void OnCollisionEnter(Collision col) 
{ 
    if (col is BoxCollider2D) 
    { 
     //When it hits the box 
    } 
    else if(col is PolygonCollider2D) 
    { 
     //When it hits the polygon 
    } 

} 

Dans ce cas, il vérifiera si le collisionneur est un BoxCollider2D ou un PolygonCollider2D et dans chaque instruction if vous pouvez faire ce dont vous avez besoin.

+0

Au lieu de rechercher le type spécifique de collisionneur, vous pouvez utiliser une balise ou un calque pour tous les collisionneurs de têtes. Cela vous permettrait d'utiliser d'autres collisionneurs de la même manière, simplement en les marquant en conséquence. – Lelefant

+1

C'est vrai, je le recommanderais aussi. J'essayais juste de le garder aussi simple que possible pour lui, donc il n'a pas besoin d'ajouter des tags et tout ce que @Lelefant – CNuts

+0

Merci. Il'try –