• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
Question by Morphobia · Jul 30, 2015 at 06:19 PM · animationmovementanimatormovement scriptanimation editor

A way to "freeze" the position of the animation?

Hello there, (sorry for the long post)

right now, I'm trying to apply a walk animation to my 3rd person character. It all worked well with the animator and with the transitions and stuff. But the problem is, I've applied an animation, which is automatically moving my player forward, so the walk animation changes the position of the player while additionally I've made a script, that controls the player that is also moving him forward. When I then move my player forward, the animation is played, but after a few seconds, he spawns at a place right behind his actual former position and again walks forward. And that is happening all the time.

Now what I'm trying to find out, is a technique or something I can do, that "freezes" the position of the animation, so that only my movement script will make him move forward but still the walk animation is played. Is there anything I can do to edit my animation in that way? The only thing I can imagine instead is to create a new animation, where the player stays on one point.

I hope someone can help me :)

BTW this is my movement script:

 var speed : float = 6f;                            // The speed that the player will move at.
 
 private var movement : Vector3;                   // The vector to store the direction of the player's movement.
 private var anim : Animator;                      // Reference to the animator component.
 private var playerRigidbody : Rigidbody;          // Reference to the player's rigidbody.
 private var floorMask : int;                      // A layer mask so that a ray can be cast just at gameobjects on the floor layer.
 private var camRayLength : float = 100f;          // The length of the ray from the camera into the scene.
 
 
 function Awake ()
 {
     // Create a layer mask for the floor layer.
     floorMask = LayerMask.GetMask ("Floor");
 
     // Set up references.
     anim = GetComponent (Animator);
     playerRigidbody = GetComponent (Rigidbody);
 }
 
 
 function FixedUpdate ()
 {
     // Store the input axes.
     var h : float = Input.GetAxisRaw ("Horizontal");
     var v : float = Input.GetAxisRaw ("Vertical");
 
     // Move the player around the scene.
     Move (h, v);
 
     // Turn the player to face the mouse cursor.
     Turning ();
 
     // Animate the player.
     Animating (h, v);
 }
 
 
 function Move (h : float, v : float)
 {
     // Set the movement vector based on the axis input.
     movement.Set (h, 0f, v);
     
     // Normalise the movement vector and make it proportional to the speed per second.
     movement = movement.normalized * speed * Time.deltaTime;
 
     // Move the player to it's current position plus the movement.
     playerRigidbody.MovePosition (transform.position + movement);
 }
 
 
 function Turning ()
 {
     // Create a ray from the mouse cursor on screen in the direction of the camera.
     var camRay : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
 
     // Create a RaycastHit variable to store information about what was hit by the ray.
     var floorHit : RaycastHit;
 
     // Perform the raycast and if it hits something on the floor layer...
     if(Physics.Raycast (camRay, floorHit, camRayLength, floorMask))
     {
         // Create a vector from the player to the point on the floor the raycast from the mouse hit.
         var playerToMouse : Vector3  = floorHit.point - transform.position;
 
         // Ensure the vector is entirely along the floor plane.
         playerToMouse.y = 0f;
 
         // Create a quaternion (rotation) based on looking down the vector from the player to the mouse.
         var newRotation : Quaternion = Quaternion.LookRotation (playerToMouse);
 
         // Set the player's rotation to this new rotation.
         playerRigidbody.MoveRotation (newRotation);
     }
 }
 
 
 function Animating (h : float, v : float)
 {
     // Create a boolean that is true if either of the input axes is non-zero.
     var walking : boolean = h != 0f || v != 0f;
 
     // Tell the animator whether or not the player is walking.
     anim.SetBool ("IsWalking", walking);
 }

Comment

People who like this

0 Show 2
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image meat5000 · Jul 30, 2015 at 02:11 PM 0
Share

Try baking x/z in the animation import tab of the model.

avatar image Positive7 · Aug 02, 2015 at 10:58 PM 0
Share

Click on Transition Arrow and turn off "Has Exit Time" ?

1 Reply

  • Sort: 
avatar image

Answer by shay4545 · Aug 02, 2015 at 10:33 PM

Don't know if this will work for you, but I had the same problem recently. What I did was click on the player, then open up the Animation tab. Select the animation you want and then on the left there should be some things that say Player : Position or Player : Rotation. Click on the Player : Position and delete it. Hopefully that works for you

Comment

People who like this

0 Show 0 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Unity Answers is in Read-Only mode

Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta on June 13. Please note, Unity Answers is now in read-only so we can prepare for the final data migration.

For more information and updates, please read our full announcement thread in the Unity Forum.

Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Player can't move left or right while holding W and S at the same time - No code making it do that? 2 Answers

How to Apply Animations to Script 1 Answer

I need help with player animation. 1 Answer

how to animate a humanoid figure. 1 Answer

Animator behaviour on GameObject 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges