Aide script zombie.

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Rini
Messages : 10
Inscription : 15 Nov 2014 21:15

Aide script zombie.

Message par Rini » 13 Mars 2015 23:02

Salut à tous. J'aurais besoin d'aide sur un script d'attaque de zombie, je suis bloqué dessus depuis pas mal de temps..

Situation:

J'ai attaché un "Box Collider" à mon zombie et lui ai attaché le script d'attaque:

Code : Tout sélectionner

var Vie:float = 100;
var Hero:GameObject;
function Update()
{
	if(Vie <= 0)
	{
		Destroy(Hero); // la vie est à 0 on détruit l'objet.
	}
}
function OnCollisionEnter(object:Collision)
{
	if(object.gameObject.tag == "player")
	{
		Vie -= 50; // ici ça enlève 50 à la vie du joueur
	}
}
function OnGUI()
{
	if(Vie <= 0)
	{
		GUI.Box(Rect(10,190,100,45),"Vos bléssurs s'infectent, vous vous transformez.");
	}
}
J'ai attaché un "Box Collider" à mon personnage "Hero" .

Déscription du problème: En gros rien ne ce passe quand le Hero et le zombie rentrent en collision. J'ai déjà essayé de mettre un Debug.Log dans la condition de collision (tag player) mais rien ne s’affichait .

Merci d'avance à tous ceux qui pourront essayer de résoudre mon problème.

PS: J'ai fais un script de déplacement du zombie qui repaire le joueur et le poursuit.

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: Aide script zombie.

Message par Titan » 13 Mars 2015 23:20

Si tu est sur que la fonction n'est pas appelé, ça viens soit du nommage ou des paramètre de la fonction, soit de ton setup dans unity.
Ici, Ça ne me parait pas venir du script, il faudrait voir ta scène dans unity.
Ton personage principal et ton zombie on tout deux un collider non trigger ?
L'un deux au moins dispose d'un rigidbody ?
Ils entrent bien en collision ?
Leurs rigidbody ne dorment pas ? => Ils se déplacent bien avec des rigidbody.Addforce() et non avec des transform.translate() ou encore CharacterController.Move() ?

Si tu utilise des CharacterController comme c'est probable, tu a la fonction CharacterController.OnControllerColliderHit(ControllerColliderHit) pour toi.

ps: si ta variable hero (variable en lower camel case!) est definit dans l'inspector sur le gameObject sur lequel est attaché ce script tu peut y accéder en faisant directement Destroy(gameObject), tu n'a pas besoin d'une variable pour ça.

D'une maniére général, l'inspector ne doit pas servir a référencer des scripts et des objets mais servir uniquement à exposer les variables que tu va vouloir modifier pour ajuster le gameplay ou pour référencer des assets (prefab, material, etc). s'en servir comme tu le fait c'est sympa pour du prototypage mais ça va te gonfler lorsque tu va vouloir mettre 100 zombie sur ta scène et ça va te bloquer lorsque tu va vouloir les instancier depuis un prefab, pour encore plus de zombie!
déclare une fonction Awake, et à l'intérieur tu fait Gameobject.Find("ton nom d'objet") et des GetComponent<TonNomDeScript>() pour initialiser tes scripts, ensuite tu déclare tes variable en privée pour qu'elles disparaissent de l'inspector (private var hero : GameObject).
____________________________________________
Hop Boy

Rini
Messages : 10
Inscription : 15 Nov 2014 21:15

Re: Aide script zombie.

Message par Rini » 14 Mars 2015 15:16

Merci, j'ai utilisé la fonction OnControllerColliderHit et maintenant quand les deux objets rentrent en collision ça les détectent. Et je vais suivre tes conseils

Verrouillé

Revenir vers « (Js) Javascript »