Accelerate
How do I make it so that for each second a rigidbody is moving, it's speed is incremented by 1? And when no buttons are being pressed, it decrements the speed by 1 each second? So far I have this, which is not working properly.
EDIT: When I press W i want it to each it's maximum speed in 10 seconds, then when i let go of W it will decrement it's speed down to 0 in 10 seconds, so that it is standing still. ALSO, if i was going in a direction when holding A, then let go of A and immediately press D, how do I make it so that the velocity doesn't get slowed down after switching directions? (If it has to, as minimal as possible?).
using UnityEngine;
using System.Collections;
public class PlayerMovement : MonoBehaviour {
Rigidbody rb;
public Vector3 velocity;
public float speed;
float maxSpeed = 10f;
float acceleration = 1f;
void Start () {
rb = GetComponent<Rigidbody> ();
speed = 1f;
}
void FixedUpdate () {
velocity = rb.velocity;
float h = Input.GetAxis ("Horizontal");
float v = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (h, 0.0f, v);
rb.AddForce (movement * speed);
if (h != 0 || v != 0) {
Accelerate ();
}
if (h == 0 && v == 0) {
Decelerate ();
}
}
void Accelerate() {
speed += acceleration * Time.deltaTime;
speed = Mathf.Clamp (speed, 1, maxSpeed);
transform.Translate (speed * Time.deltaTime, 0, 0, Space.World);
}
void Decelerate() {
speed -= acceleration * Time.deltaTime;
speed = Mathf.Clamp (speed, 1, maxSpeed);
transform.Translate (speed * Time.deltaTime, 0, 0, Space.World);
}
}
Answer by Zoogyburger · May 21, 2016 at 05:11 AM
I would just get the key and use Time.deltaTime to increase the speed and use else to decease the speed.
psudo-code:
public float speed;
public float time;
If(Input.GetKey(keycode.Space)){
time += speed * Time.deltaTime;
}else{time -= speed * Time.deltaTime;}
Your answer
Follow this Question
Related Questions
How to make Airplane move forward faster INSTANTANEOUSLY? 1 Answer
Rigidbody. Acceleration of free falling object works bad 0 Answers
How i make my player object passes through walls? 2 Answers
How to Make A Character Stop At Wall? 0 Answers
How to Limit or Remove Acceleration with RigidBody2D? 1 Answer