Dans toute collision, deux GameObjects sont impliqués, non? Ce que je veux savoir, c'est comment décider quel objet doit contenir mon OnCollision*
?
Par exemple, supposons que j'ai un objet Player et un objet Spike. Ma première pensée est de mettre sur le lecteur un script contenant du code comme celui-ci:
OnCollisionEnter(Collision coll) {
if (coll.gameObject.compareTag("Spike")) {
Destroy(gameObject);
}
}
Bien sûr, la même fonctionnalité peut être obtenue en ayant à la place un script sur l'objet Spike qui contient du code comme celui-ci:
OnCollisionEnter(Collision coll) {
if (coll.gameObject.compareTag("Player")) {
Destroy(coll.gameObject);
}
}
Bien que les deux soient valides, il était plus logique pour moi d'avoir le script sur le lecteur car, dans ce cas, lorsque la collision se produit, une action est exécutée sur le lecteur .
Cependant, ce qui me fait douter, c'est qu'à l'avenir, vous souhaiterez peut-être ajouter plus d'objets qui tueront le joueur en cas de collision, tels qu'un ennemi, une lave, un faisceau laser, etc. Ces objets auront probablement des balises différentes. Alors le script sur le Player deviendrait:
OnCollisionEnter(Collision coll) {
GameObject other = coll.gameObject;
if (other.compareTag("Spike") || other.compareTag("Lava") || other.compareTag("Enemy")) {
Destroy(gameObject);
}
}
Alors que, dans le cas où le script était sur le Spike, tout ce que vous auriez à faire est d'ajouter ce même script à tous les autres objets qui peuvent tuer le joueur et nommer le script quelque chose comme KillPlayerOnContact
.
De plus, si vous avez une collision entre le joueur et un ennemi, vous voudrez probablement effectuer une action sur les deux . Dans ce cas, quel objet devrait gérer la collision? Ou doit-il à la fois gérer la collision et effectuer différentes actions?
Je n'ai jamais construit de jeu d'une taille raisonnable auparavant et je me demande si le code peut devenir compliqué et difficile à maintenir car il se développe si vous vous trompez ce genre de chose au début. Ou peut-être que tous les moyens sont valides et que cela n'a pas vraiment d'importance?
Toute idée est très appréciée! Merci pour votre temps :)
Tag.SPIKE
place?