Tout d'abord je tiens à dire que je suis débutant.
Bon, j'ai un problème dans le codage qui m'empêche d'avancer. J'ai regardé un tuto pour m'aider a faire un AI (Zombie) sur UNITY, je n'ai pas eu de bug jusqu'à présent :
Code : Tout sélectionner
moveDirection = transform.forward;
move Direction *= moveSpeed;
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
Voici mon script entier :
Code : Tout sélectionner
#pragma strict
var Distance;
var Target : Transform;
var LookAtDistance : float = 100;
var chaseRange : float = 100;
var attackRange : float = 2.2;
var moveSpeed : float = 3;
var Damping : float = 6;
var attackRepeatTime : float = 1;
var TheDammage : float = 12;
private var attackTime : float;
var controller : CharacterController;
var gravity : float = 20;
private var MoveDirection : Vector3 = Vector3.zero;
function Start () {
AttackTime = Time.time;
FindHealth();
}
function Update () {
Distance = Vector3.Distance(Target.position, transform.position);
if(Distance < LookAtDistance){
lookAt();
}
if(Distance < attackRange){
attack();
}
else if(Distance < chaseRange){
chase();
}
}
function lookAt(){
var rotation = Quaternion.LookRotation(Target.position - transform.position);
tranform.rotation = Quaternion.Slerp(transform.rotation, rotation,Time.deltaTime * Damping);
}
function chase (){
GetComponent.<Animator>().Play("walk");
moveDirection = transform.forward;
move Direction *= moveSpeed;
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
function attack(){
if(Time.time > attackTime){
GetComponent.<Animator>().Play("attack");
Target.SendMessage("ApplyDammage", TheDammage);
Debug.Log("The enemy has attacked");
attackTime = Time.time + attackRepeatTime;
}
}
function ApplyDammage(){
chaseRange += 20;
moveSpeed += 2;
lookAtDistance += 40;
}
function FindHealth(){
Target = GameObject.Find("PlayerStats").GetComponent(PlayerStats).transform;
}