- Home /
Play one animation after another... need help with Queued
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);
}
Answer by stingman · May 04, 2012 at 06:25 AM
Animations are tricky... sometimes it just takes a little bit of playing around until you get the right effect. I got it working... I set the wrap mode for pumpkinJump from "Once" to "ClampForever" then instead of Queueing the next animation I crossfaded into it and made a boolean to say if the jump animation is playing then don't play the attack animation.
Your answer
Follow this Question
Related Questions
Animation Stop and Stay 1 Answer
Walking animation has wrong rotation 0 Answers
Animation problem in script 0 Answers
Zooming animation doesn't work 1 Answer
How to use CrossFade with anim2 when anim1 is over? 1 Answer