- Home /
How would I play an animation when my object is moved?
I've tried several solutions, and while most of them didn't work at all, some of them did, but because it was in the update function and the object was still moving the animation would repeat before it ended. Here are some of my attempts:
function Update () {
if (rigidbody.velocity.magnitude == 0){
animation.Play("Idle 1");
}
else if (rigidbody.velocity.magnitude >= 1) {
animation.Play("Fly 1");
}
}
function Update () {
curPos = transform.Position;
lastpos = position;
if(curPos == lastPos) {
print("Not moving");
target.animation.Play("Idle 1");
}
else {
target.animation.Play("Fly 1");
}
lastPos = curPos;
} var lastPosition : Vector3;
var myTransform : Transform;
var isMoving : boolean;
function Start()
{
myTransform = transform;
lastPosition = myTransform.position;
isMoving = false;
}
function Update()
{
var target = GameObject.FindGameObjectWithTag("Player");
if ( myTransform.position != lastPosition ){
isMoving = true;
}
else {
isMoving = false;
lastPosition = myTransform.position;
}
if (isMoving == true){
target.animation.Play("Fly 1");
}
else {
target.animation.Play("Idle 1");
}
}
Its pretty confusing and none of these really worked, so any help would be greatly appreciated, thanks.
Answer by Julien-Lynge · Jan 26, 2013 at 07:39 AM
Create your animation with the entire thing you want to animate as the child(ren) of another game object. That way, you can move the root game object, and the animation is entirely relative to it. If you don't have a parent to what you're animating, it does the animation relative to the current position in world space - not what you want.
Your answer
![](https://koobas.hobune.stream/wayback/20220613091613im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How would I go about carrying out another object's animation IN C#! 1 Answer
A node in a childnode? 1 Answer
Why Does My Object Change Position During Update? 0 Answers
Make 2d Animation Scene 0 Answers