- Home /
 
Cannot control gameobject and play animation simultaneously
Hey there! I've been trying to fix this problem for a little under a week now, and have no idea what i'm doing wrong:
I have this turret that you control with the mouse. I want it to play a recoil animation on the nozzles the same time it fires a projectile. However, I can't get this to work. Here are some things that happen.
If I had the turret rotated, it would jerk back to the position it was animated in once I fired. And I can't control the turret while firing.
 
when I tried to make a new animation in Unity, It transported the entire turret to 0,0,0. And it didn't animate the nozzle, it animated the entire turret gameobject.
Here is the animation script:
 #pragma strict
 
 var projectile : GameObject;//ignore
 internal var nextFire :float;
 
 var fireRate : float = 0.5;
 
 var clip1 : AnimationClip;
 var clip2 : AnimationClip;
 
 
 function Start () {
 
 
 
 }
 
 function Update () {
    if (Input.GetButton ("Fire1")&& Time.time > nextFire) {
    
       animation.Play(clip1.name);
       animation.Play(clip2.name);
       
       nextFire = Time.time + fireRate;
       
      
       
    }
 }
 
               And the control script(sorry about the mess):
 //#pragma strict
 
 /*var forwardSpeed : float = 3;//ignore
 var roll : float = 2;//ignore
 var lift : float = 25; */
 var yAxis : float = 2;
 var xAxis : float = 2;
 /*var deadZoneXPlus : float = 5;  
 var deadZoneXMinus : float = -5;
 var deadZoneYPlus : float = 5;
 var deadZoneYMinus : float = -5;
 var bullet : GameObject;
 var speed : float; */
 
 function Start() {
 
   
 }
 
 
 function Update () 
 {
   
       //forward speed
   //var forward = Input.GetAxis("Mouse Y")*forwardSpeed;
 
  
    //turn roll
  // var rolly = Input.GetAxis("Mouse X")*roll;
  
     //rotate Buggy
  
    //var lifty = Input.GetAxis("Jump")*lift;
    //Lift dropship
  
     var y = Input.GetAxis("Mouse Y")*yAxis;
   
    
    
      //yaw
     var x = Input.GetAxis("Mouse X")*xAxis;
  
   //roll
   //transform.Rotate(0,rolly, 0);
    //if ( Input.GetAxis ("Mouse X") > deadZoneXPlus || Input.GetAxis("Mouse X") < deadZoneXMinus) 
   //{
   
   //pitch
   transform.Rotate(0,y,0);
   //}
   
   //if (Input.GetAxis ("Mouse Y") > deadZoneYPlus || Input.GetAxis ("Mouse Y") < deadZoneYMinus) {
   //yaw
   transform.Rotate(x,0,0);
   //}
   
   //move forward
   //rigidbody.AddRelativeForce(0,forward,0);
   
   //lift
   //rigidbody.AddRelativeForce(0,0,lifty);
   
   
   /*if (Input.GetButton("fire1")){
   
   var clone : GameObject = Instantiate(bullet, transform.position, transform.rotation);
   
   clone.transform.TransformDirection(Vector3(speed,0,0));
   */
   
     
   
   }
   
 
 }
 
              Your animation probably animates position and rotation of the same objects you are transfor$$anonymous$$g. Therefore overwriting your transformations. If you want to negate this, put positioning in LateUpdate, which is after animations have been appied 
Your answer
 
             Follow this Question
Related Questions
How to make camera position relative to a specific target. 1 Answer
Controlling animation with mouse 0 Answers
Can I make animations snap to a frame? 1 Answer
Zoom in/out with right button of mouse 1 Answer
Space Flying Script Using Mouse 1 Answer