• 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
0
Question by OOVUM · Jul 22, 2020 at 07:58 PM · animationmovementpositionplayerparent-child

How do you change a players position during an animation?

Hello, I've come across a problem recently. I'm making a endless runner. In my running animation i want him to go up and down so in my animation i used the move tool to make him go up in a part of the animation. But when i do that it of course messes up the game and my guy wont move. I believe this happens because the animator is interfering with the player controller when you move the position of the player. Someone had a similar problem and suggested making an empty parent object and putting the player controller on that. But that wont work because I think my script needs to find my players collider and rigid body. If anyone could tell me a solution to this problem by telling me how i could modify my script when its on the players parent object to make it work or another solution it would be greatly appreciated. Here is my script:

public class PlayerController : MonoBehaviour

{ public float movespeed;

public float jumpforce;

private Rigidbody2D myRigidbody;

public bool grounded;

public LayerMask whatIsGround;

private Collider2D myCollider;

private Animator myAnimator;

// Use this for initialization

void Start() { myRigidbody = GetComponent(); myCollider = GetComponent(); myAnimator = GetComponent(); } // Update is called once per frame

void Update()

{

grounded = Physics2D.IsTouchingLayers(myCollider, whatIsGround);

myRigidbody.velocity = new Vector2(movespeed, myRigidbody.velocity.y);

if (CrossPlatformInputManager.GetButtonDown("jump") || Input.GetMouseButtonDown(0)) {

if (grounded)

{ myRigidbody.velocity = new Vector2(myRigidbody.velocity.x, jumpforce);

} }

myAnimator.SetFloat ("Speed", myRigidbody.velocity.x);

myAnimator.SetBool ("Grounded", grounded);

}

}

Thank you for your help.

Comment
Add comment
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

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by tuinal · Jul 23, 2020 at 01:05 AM

Someone had a similar problem and suggested making an empty parent object and putting the player controller on that. But that wont work because I think my script needs to find my players collider and rigid body.

Someone was correct, this is the best way of doing it. You can attempt to workaround but it will probably lead to headaches down the line. In principle you should avoid animating a gameobject which has an active rigidbody.

You can still get the collider and rigidbody. In fact you can get any component on any gameobject you want from any open scene in any script. myRigidbody = GetComponentInParent(Rigidbody()); etc. would probably work in this case.

Comment
Add comment · Show 2 · 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
avatar image OOVUM · Jul 23, 2020 at 08:42 PM 0
Share

Thanks for responding, but i have a problem. I switched the code to myRigidbody = GetComponentInParent();

     myCollider = GetComponentInParent<Collider2D>();

     myAnimator = GetComponentInParent<Animator>();
 }

but the console says that value cannot be null for collider. I don't see how the value would be null if i defined it in the lines above. i think it might be because of this line of code:

private Collider2D myCollider;

i tried changing private to public and it didn't fix it. If you don't understand what my game is it just a endless runner where force is always allied to my character to make him keep moving along and jumping over stuff. If you could help me fix this problem and preferably modify my code for me it to would be appreciated. By the way I am quite new to coding and game development so sorry if some of my problems have an obvious fix.

avatar image tuinal OOVUM · Jul 23, 2020 at 11:51 PM 0
Share

It will be null if the function doesn't find a collider.

There could be multiple causes which are hard to guess at without the scene. The fall-back would be to simply make the fields public, and drag+drop the correct gameobjects to them (e.g. if there's a public Collider2D, you can drag + drop any gameobject with a Collider2D in the inspector and it will be assigned.

avatar image
0

Answer by logicandchaos · Jul 22, 2020 at 09:42 PM

just move the player when you are recording the animation and it will be apart of the animation. But if you want to control movement with code I think you have to tick or untick root motion box.

Comment
Add comment · Show 1 · 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
avatar image OOVUM · Jul 23, 2020 at 09:44 PM 0
Share

that's the thing, you cant move the players position when recording an animation or it causes errors, my question was how do i work around this.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

392 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Create Player From Values [ Photon ] 0 Answers

Comparing the position of two children objects 0 Answers

make player move in direction it's facing 2 Answers

How to get animation to Stop and Start with a key press 1 Answer

why will my jump animation only play on multi-jumps? 0 Answers

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges