My zombie attack animation “swing” wont play, it will play if animation “walk” isn’t in the script but other than that it wont play.
Please help me.
My Script
using UnityEngine;
using System.Collections;
public class AISimple : MonoBehaviour {
public float Distance;
public Transform Target;
public float lookAtDistance= 50.0f;
public float chaseRange= 20.0f;
public float attackRange= 5.0f;
public float moveSpeed= 1.0f;
public float Damping= 6.0f;
public float fov= 160.0f;
private RaycastHit hit;
public CharacterController controller;
public float gravity = 20.0f;
private Vector3 moveDirection = Vector3.zero;
bool LineOfSight ( Transform target ){
if (Vector3.Angle(target.position - transform.position, transform.forward) <= fov &&
Physics.Linecast(transform.position, target.position, out hit) &&
hit.collider.transform == target) {
return true;
}
return false;
}
/*
This ai will fly and move through objects inlcuding terrain!
*/
void Update (){
if (LineOfSight(Target) == true && hit.transform == Target) // Target is player
{
//enemy sees you - perform some action
// Gauge the distance to the player. Line in 3d space. Draws a line from source to Target.
Distance = Vector3.Distance(Target.position, transform.position);
// Turn yellow enemy is getting close. Will chase soon.
if (Distance < lookAtDistance)
{
lookAt();
}
if (Distance < attackRange)
{
attack();
animation.Play ("swing");
}
// Attack! Chase the player until/if player leaves attack range.
if (Distance < chaseRange)
{
chase ();
animation.Play("walk");
}
}
else
{
//enemy doesn't see you
}
}
// Turn to face the player.
void lookAt (){
// Rotate to look at player.
Quaternion rotation= Quaternion.LookRotation(Target.position - transform.position);
// Dampening will slow the turn speed of enemy.
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
// transform.LookAt(Target);
}
void chase (){
//animation.Play("walk");
moveDirection = transform.forward;
moveDirection *= moveSpeed;
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
void attack (){
//animation.Stop("walk");
}
}