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);
}
}