• 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 maxim6394 · Feb 25, 2015 at 01:33 PM · movementrigidbodyvelocitycontrols

Player movement controls too slow

I've read many articles about this topic but I couldn't find a good solution for this. All the tutorials use the addforce method on a rigidbody for controlling, seems like a good standard solution but no matter how I change the variables, the game controls are just crap. It takes the player a lot of time to get to his normal speed when using addforce in the fixedupdate method. It makes the controls too slow. I tried settigs the velocity of the player rigidbody directly and that made the controls very responsive, just like it should be. Of cause that's only an appropriate solution if I don't have any other physical forces influencing the player rigidbody. Does anyone have an idea how to make the controls quick and responsive but not messing with the physics engine like when setting the velocity directly? In a 2D game that I began earlier I had all the forces for every game character in a list, so each one could be modified seperately. This allowed me to modify only the player movement force but leaving everything else as it is. Is there a way to do this in unity?

Comment
yingzi0614

People who like this

1 Show 0
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

1 Reply

· Add your reply
  • Sort: 
avatar image

Answer by Baste · Feb 25, 2015 at 01:44 PM

In my experience, you never want to use addforce for player movement, unless you're trying to make a simulation game. When you're using AddForce, you're essentially pushing the player character around the game world. Making that work well is really difficult. Setting the velocity directly is usually the best option. The physics system handles that completely fine.

Also, in the vast majority of games, when you stop holding down move, you want the player character to stop immediately, instead of when drag has made it stop five seconds later.

If you want the player character to accelerate to max speed instead of jumping directly to max speed, using Vector3.MoveTowards from the current velocity to the input velocity is a lot easier to adjust than AddForce:

 Vector3 movementInput = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
 rigidBody.velocity = Vector3.MoveTowards(rigidBody.Velocity, movementInput * characterSpeed, Time.deltaTime * accelerationSpeed);

You could do the same thing with Vector3.Lerp, which would make your player's acceleration slow down as it approaches max speed.

Comment

People who like this

0 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 maxim6394 · Feb 25, 2015 at 01:54 PM 0
Share

But the physical influence on the player is not correct when setting the velocity. In my case it's a ball that moves through a level with several ramps. What if another force should push the player away, wouldn't it be ignored when there is movement input?

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.

Update about the future of Unity Answers

Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta later in June. Please note, we are aiming to set Unity Answers to read-only mode on the 31st of May in order to prepare for the final data migration.

For more information, please read our full announcement.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Rigidbody player movement unrealistic velocity problem. 1 Answer

Moving rigidbody upwards 1 Answer

2D Rigidbody Movement Without Setting Velocity 0 Answers

How to move Character with AddForce 1 Answer

Bug, while checking if rigidbody is moving 0 Answers


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