- Home /
2D AddForce vs. Velocity
I'm doing a 2D platformer, and I'm trying to figure out the best way to control movement. I have addforce and it works relatively well, except when you hold down whatever key, it keeps adding force, and I don't really want that. I would like snappy controls that quit moving as soon as you let go of the key. I tried doing .velocity, and that was awesome, had the snappy controls but I fell incredibly slow and was no longer able to jump. I've also messed around a little with gravity and drag, but still not as responsive as velocity was. What do you recommend for snappy controls? Thanks in advance for your help!
Here's my script currently (in C#):
using UnityEngine; using System.Collections;
public class PlayerController : MonoBehaviour {
public float jump;
public float speed;
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public LayerMask whatIsGround;
void Update () {
if (grounded && Input.GetKeyDown ("space")){
rigidbody2D.AddForce(new Vector2(0, jump), ForceMode2D.Impulse);
//Debug.Log ("grounded/jump");
}
}
void FixedUpdate(){
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
float moveHorizontal = Input.GetAxis ("Horizontal");
Vector3 movement = new Vector3 (moveHorizontal,0.0f, 0.0f);
rigidbody2D.AddRelativeForce (movement * speed * Time.deltaTime);
//rigidbody2D.velocity = (movement * speed * Time.deltaTime);
}
}
Answer by nirharpaz · Feb 08, 2015 at 10:18 PM
rigidbody moves smoothly all the way and you need to put your restrictions. i thing i would define is max speed and make sure that if velocity>maxVelocity, then velocity=maxVelocity (i know its V3, just set it to the params you see fit).
you can also put a 'bool pushed = false' var that turns true when mouse goes down and false when up. only if pushed==false you add the force so in this way you can make sure that the 1st option will only happen once.
Your answer
Follow this Question
Related Questions
Rigidbody2D.velocity.x not working but Y does 0 Answers
Shoot logic, bullet instantiation 1 Answer
Animation stops rotation 0 Answers
Movement stops working randomly 1 Answer
My shooting script doesn't add force to the projectile 4 Answers