Petite erreur Javscript

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
Daimonos95
Messages : 2
Inscription : 26 Mars 2016 00:59

Petite erreur Javscript

Message par Daimonos95 » 26 Mars 2016 01:10

Bonjour, je débute depuis peu sur Unity3d, et j’essaye de faire un script pour AdvancedAI donc tous ce passe bien sauf a une ligne où il y aurais un erreur et je n'arrive pas a la résoudre . Tous le script a l'air bon , mais lorsque l'ennemie s'approche de moi pour m'attaqué le message suivant apparaît dans la commande :
SendMessage ApplyDammage has no receiver!
UnityEngine.Component:SendMessage(String, Object
)

Voici mon script au cas ou:

Code : Tout sélectionner

var Distance;
var Target : Transform;
var lookAtDistance = 25.0;
var chaseRange = 15.0;
var attackRange = 1.5;
var moveSpeed = 5.0;
var Damping = 6.0;
var attackRepeatTime = 1;

var TheDammage = 40;

private var attackTime : float;

var controller : CharacterController;
var gravity : float = 20.0;
private var MoveDirection : Vector3 = Vector3.zero;

function Start ()
{
	attackTime = Time.time;
}

function Update ()
{
	Distance = Vector3.Distance(Target.position, transform.position);
	
	if (Distance < lookAtDistance)
	{
		lookAt();
	}
	
	if (Distance > lookAtDistance)
	{
		GetComponent.<Renderer>().material.color = Color.green;
	}
	
	if (Distance < attackRange)
	{
		attack();
	}
	else if (Distance < chaseRange)
	{
		chase ();
	}
}

function lookAt ()
{
	GetComponent.<Renderer>().material.color = Color.yellow;
	var rotation = Quaternion.LookRotation(Target.position - transform.position);
	transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);	
	}


function chase ()
{
    GetComponent.<Animation>().Play("run");
	GetComponent.<Animation>()["run"].speed = 1;
		
	
	moveDirection = transform.forward;
	moveDirection *= moveSpeed;
	
	moveDirection.y -= gravity * Time.deltaTime;
	controller.Move(moveDirection * Time.deltaTime);
}

function attack ()
{
	if (Time.time > attackTime)
	{
	    GetComponent.<Animation>().Play("attack");
	    GetComponent.<Animation>()["attack"].speed = 1;
			
		Target.SendMessage("ApplyDammage", TheDammage);       // => la ligne en question
		//Debug.Log("The Enemy Has Attacked");
		attackTime = Time.time + attackRepeatTime;
	}
}

function ApplyDammage ()
{
	chaseRange += 30;
	moveSpeed += 2;
	lookAtDistance += 40;
}
Balise Code SVP, et évitez le rouge dans vos messages (sauf raison particulière). Lire la Netiquette. Merci

Avatar de l’utilisateur
Marc_S
Messages : 330
Inscription : 14 Fév 2012 16:30
Localisation : Paris
Contact :

Re: Petite erreur Javscript

Message par Marc_S » 26 Mars 2016 02:33

Damage ne prend qu'un "m". ;-)

Corrige aussi la faute sur ta variable et ta fonction pour éviter la confusion.

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Petite erreur Javscript

Message par Moi 1971 » 26 Mars 2016 12:14

Marc_S a écrit :Damage ne prend qu'un "m". ;-)

Corrige aussi la faute sur ta variable et ta fonction pour éviter la confusion.
Du moment que c'est écrit partout pareil et que ce n'est pas un mot réservé, le nom de variable n'a pas d'importance.

Le problème vient peut-être du nombre de paramètre passé à ta fonction :
function ApplyDammage ()
l'appel :
SendMessage("ApplyDammage", TheDammage)

Un exemple de Code JavaSlip ici : http://docs.unity3d.com/ScriptReference ... ssage.html

Avatar de l’utilisateur
Marc_S
Messages : 330
Inscription : 14 Fév 2012 16:30
Localisation : Paris
Contact :

Re: Petite erreur Javscript

Message par Marc_S » 26 Mars 2016 12:36

Moi 1971 a écrit :
Marc_S a écrit :Damage ne prend qu'un "m". ;-)

Corrige aussi la faute sur ta variable et ta fonction pour éviter la confusion.
Du moment que c'est écrit partout pareil et que ce n'est pas un mot réservé, le nom de variable n'a pas d'importance.
Sauf que s'il n'avait pas fait de faute sur sa variable, il n'en aurait pas fait non plus ailleurs d'où ma remarque.

Ce n'est pas parce que ça marcherait avec une faute dans toutes les occurrences de la variable que c'est une bonne méthode de travail.

Nirmat
Messages : 15
Inscription : 19 Jan 2016 14:49

Re: Petite erreur Javscript

Message par Nirmat » 27 Mars 2016 14:40

Bonjour, il existe une option pour la fonction 'SendMessage', quelque chose comme SendMessageOptions.DontRequireReceiver,
mais j'avoue que je ne comprends pas bien cette histoire de récepteur.

Daimonos95
Messages : 2
Inscription : 26 Mars 2016 00:59

Re: Petite erreur Javscript

Message par Daimonos95 » 28 Mars 2016 02:01

Merci de m'avoir aidé j'ai résolu le probléme j'ai corrigé la ligne , et j'ai mis sa a la place Target.SendMessage("ApplyDamage", TheDamage, SendMessageOptions.DontRequireReceiver);

J'ai juste rajouté SendMessageOptions.DontRequireReceiver.
Merci a tous

Verrouillé

Revenir vers « (Js) Javascript »