Page 1 sur 1

Problème dans le Tuto basique etape 9

Publié : 01 Mars 2013 23:10
par MrNantys
Bonjour à tous,
Je suis nouveau sur ce forum, et aussi sur Unity3D. Je réalise actuellement un projet de FPS sur ce dernier et j'ai regardé les tutos pour crée un FPS basique disponible sur ce site (qui sont d'ailleurs d'une très bonne qualité).

Malheureusement, j'ai un petit problème suite à l'étape 9, j'ai recopié le code, mis le script dans l'ennemi et toute la procédure nécessaire pour qu'il se rapproche de moi... mais cela ne fonctionne pas, l'ennemi ne bouge pas d'un poil (j'ai vu que des problèmes similaires avaient déjà eu lieu avec des personnes de ce forum).

Voici au cas ou le code, il y a peut-être (surement même ?) un problème.

Code : Tout sélectionner

var hitPoints=20;
var explosion:Transform;

var characterLayer:LayerMask;
var gravity=20;

private var player:GameObject;
player=GameObject.Find ("Player"); //... allez chercher l'objet.

var visionAngle:float = 45; //... l'ennemi peut voir à 45° à gauche et 45° à droite.
var visionRange:float = 100;//.. à 100m.
private var distanceToPlayer:float;//...distance entre ennemi et objet.
private var canSeePlayer:boolean=false;

var hit : RaycastHit; //...rayon envoyé de l'ennemi vers le jouer pour voir.

function update ()
{
	seekPlayer ();
}

	function seekPlayer ()
	{
	directionToPlayer = player.transform.position-transform.position;
	distanceToPlayer = Vector3.Distance(transform.position.player, transform.position);
	
	var playerAngle = Vector3.Angle(directionToPlayer, transform.forward);
	
	if (Mathf.Abs (playerAngle) < visionAngle && distanceToPlayer < visionRange )
		{
		Physics.Linecast (transform.position,player.transform.position,hit,~characterLayer.value);
			
		if (hit.collider.name == player.collider.name)
			{
				var moveDirection = transform.forward;	
			}
			
		}
		moveDirection.y-=gravity*Time.deltaTime;
		var controller:CharacterController=GetComponent(CharacterController);
		var flags = controller.Move (moveDirection*20*Time.deltaTime);	
	
	}
		
		
function makeDamage (Damage:float)
{
	hitPoints-=Damage;
	
	if (hitPoints <= 0)
	{
		Instantiate (explosion,transform.position,transform.rotation);
		Destroy(gameObject);
		
	}
}
J'espère que vous me donnerez une solution à mon problème, merci à tous.

Re: Problème dans le Tuto basique etape 9

Publié : 01 Mars 2013 23:13
par cayou66
Hello,
je vote pour:

Code : Tout sélectionner

function update ()
qui devient:

Code : Tout sélectionner

function Update ()
Le jeu des 7 erreurs ! ;)

Re: Problème dans le Tuto basique etape 9

Publié : 01 Mars 2013 23:21
par MrNantys
Merci pour ta réponse rapide, et qui me semble être la clé de la solution. =P

Mais, maintenant, une nouvelle erreur est survenu --> MissingFieldExpession : Field "UnityEngine.Vector3.player" not found. Boo.Lang.Runtime etc....

Une idée de ce que cela pour être?

Merci encore.

Re: Problème dans le Tuto basique etape 9

Publié : 01 Mars 2013 23:43
par ZJP
Là, je vote pour l'absence d'un objet taggé "Player"

Code : Tout sélectionner

player=GameObject.Find ("Player");

Re: Problème dans le Tuto basique etape 9

Publié : 01 Mars 2013 23:51
par MrNantys
Malheureusement, non, j'ai bien un objet nommé Player ... :?

Re: Problème dans le Tuto basique etape 9

Publié : 02 Mars 2013 10:46
par Max
MrNantys a écrit :Mais, maintenant, une nouvelle erreur est survenu --> MissingFieldExpession : Field "UnityEngine.Vector3.player" not found. Boo.Lang.Runtime etc....
Comme le dit le message d'erreur, la classe Vector3 ne comporte pas de champ player

Dans ton code (si j'ai bien lu vite fait à deux endroit au moins), cela serait plutôt player.transform.position à la place de transform.position.player.... :roll:

Re: Problème dans le Tuto basique etape 9

Publié : 02 Mars 2013 11:47
par MrNantys
Effectivement, c'étai bien ça :P

Et bien, mon problème résolu, je vous remercie vraiment, car je commençais vraiment à en avoir marre.


Énorme merci à tous ;)