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);
}
}