[RESOLU][DB]Collisions avec CharacterController, sans Rigidbody

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Derek82
Messages : 40
Inscription : 28 Mai 2020 16:36

[RESOLU][DB]Collisions avec CharacterController, sans Rigidbody

Message par Derek82 » 25 Juin 2020 10:31

J'essaye de faire un jeu de plateforme en 2.5D (tout est en 3D mais on ne se déplace que sur X et Y).
les déplacements du joueur se font sans rigidbody, avec un CharacterController et des Move (ça m'a été conseillé sur le forum). Mais je n'arrive pas à gérer les collisions comme je voudrais.

J'arrive à détecter les collisions entre mon joueur et un élément statique (le décors, un mur...) avec OnControllerColliderHit
mais ça ne fonctionne je crois que sur des objets statiques.

Hors je voudrais gérer des collisions d'ennemis ou de projectiles qui se déplacent et qui pourraient toucher le joueur.
et là je n'arrive pas. j'ai fait divers essais avec/sans rigidbody et des colliders, avec les fonctions OnCollisionEnter, OnTriggerEnter sans succes. en mettant un script sur le joueur, sur l'ennemi, les deux... mais je n'arrive pas à détecter une collision dès lors qu'il y a du mouvement...
idéalement j'aimerai éviter d'utiliser des rigidbody de toute façon (si c'est possible) pour utiliser des CharacterController aussi pour les ennemis. mais comment s'y prendre je m'y perds un peu.

Pourriez-vous m'éclairer, je me perds un peu dans la doc et je lis sur les forums des choses totalement différentes (voire contradictoires sur le sujet des collisions)


Merci !
Dernière édition par Derek82 le 26 Juin 2020 00:04, édité 1 fois.

Derek82
Messages : 40
Inscription : 28 Mai 2020 16:36

[RESOLU][DB]Collisions avec CharacterController, sans Rigidbody

Message par Derek82 » 25 Juin 2020 12:05

Désolé j'ai posté trop tôt...
j'avais la solution mais embrouillé par différentes pistes et mes lacunes je n'étais pas au clair.

la solution, pour ceux que ça intéresserait :
mon personnage n'a pas de rigidbody
l'ennemi a un rigidbody mais isKinetic est activé, gravity désactivé + un capsule collider sur isTrigger, puisque je préfère le déplacer sans utiliser la physique, avec des Move.

ensuite sur le script de l'ennemi :

Code : Tout sélectionner

void OnTriggerEnter(Collider col)
{
Tue();
}
 
void Tue()
{
print("Joueur a été touché");
}

Répondre

Revenir vers « Scripting »