When my character gets within range of my enemy I want the enemy to play through his current animation but stop when it finishes and play the attack animation. The problem is I can’t get it to play through. What happens right now is my enemy stops his current animation and the frame jumps to the beginning of the new animation without actually completing the first animation. crossfadequeued or playqueued are both having the same effect. I’ve tried all wrap modes for the first animation as well… no luck. Here is my script. If anyone has suggestions I’d be most grateful. Thanks!
var explosion : Transform;
var animatedPumpkin : GameObject;
var target : Transform;
var attackDistance : float = 5;
var rotateSpeed = 300;
private var rotate : Quaternion;
var speed : float = 10;
function Start () {
animatedPumpkin.animation["PumpkinJump"].wrapMode = WrapMode.Loop;
animatedPumpkin.animation["PumpkinAttack"].wrapMode = WrapMode.Loop;
}
function Update () {
var tgtDir = target.position - transform.position;
var tgtDist = tgtDir.magnitude;
if (tgtDist <= attackDistance) {
Attack();
}
if (tgtDist > attackDistance) {
animatedPumpkin.animation.Play("PumpkinJump");
fireParticle.renderer.enabled = false;
}
}
function Attack() {
attackDistance = 100;
animatedPumpkin.animation["PumpkinJump"].wrapMode = WrapMode.Once;
animatedPumpkin.animation.PlayQueued("PumpkinAttack", QueueMode.CompleteOthers);
fireParticle.renderer.enabled = true;
yield WaitForSeconds(1);
var moveDirection = target.position - transform.position;
moveDirection.y = 0;
rotate = Quaternion.FromToRotation(Vector3.forward, moveDirection);
transform.rotation = Quaternion.RotateTowards(transform.rotation, rotate, rotateSpeed * Time.deltaTime);
var velocity = moveDirection.normalized * speed;
rigidbody.velocity = velocity;
yield WaitForSeconds(4);
Destroy(gameObject);
Instantiate(explosion, transform.position, explosion.transform.rotation);
}