1
0
Fork 0

Player speed state

This commit is contained in:
Piegames 2018-04-23 20:37:21 +02:00
parent 2b5a0b4d67
commit 1fab4820de

View file

@ -15,12 +15,25 @@ public class PlayerMovement : MonoBehaviour {
[SerializeField]
public float brake = 2f;
// The time of the acceleration/deceleration sounds in seconds
public double accelerationTime;
public double decelerationTime;
public enum SpeedState
{
SLOW, FASTER, FAST, SLOWER
}
public SpeedState state;
public double changeTime;
Rigidbody2D rb;
// Use this for initialization
void Start() {
rb = GetComponent<Rigidbody2D>();
messagePosted = false;
state = SpeedState.SLOW;
}
void Update() {
@ -30,6 +43,8 @@ public class PlayerMovement : MonoBehaviour {
}
if ( !firstKeyPressed && Input.anyKey ) {
firstKeyPressed = true;
state = SpeedState.FASTER;
changeTime = Time.time;
}
}
@ -40,15 +55,53 @@ public class PlayerMovement : MonoBehaviour {
Vector3 speedVec = new Vector3(rb.velocity.x, rb.velocity.y, 0);
float speed = speedVec.magnitude;
bool braking = Input.GetAxis("Vertical") < 0;
if (braking) {
switch (state) {
case SpeedState.FASTER:
if (Time.time - changeTime > accelerationTime)
state = SpeedState.SLOWER;
break;
case SpeedState.FAST:
changeTime = Time.time;
state = SpeedState.SLOWER;
break;
case SpeedState.SLOWER:
if (Time.time - changeTime > decelerationTime)
state = SpeedState.SLOW;
break;
case SpeedState.SLOW:
break;
}
} else {
switch (state)
{
case SpeedState.FASTER:
if (Time.time - changeTime > accelerationTime)
state = SpeedState.FAST;
break;
case SpeedState.FAST:
break;
case SpeedState.SLOWER:
if (Time.time - changeTime > decelerationTime)
state = SpeedState.FASTER;
break;
case SpeedState.SLOW:
changeTime = Time.time;
state = SpeedState.FASTER;
break;
}
}
{ // Forward
Vector3 acc = transform.up * acceleration;
if (Input.GetAxis("Vertical") < 0)
if (braking)
acc *= 0;
rb.AddForce(acc);
}
{// Drag
Vector3 drag = speedVec.normalized * speed * speed * friction * -1;
if (Input.GetAxis("Vertical") < 0) {
if (braking) {
drag *= brake;
drag *= speed;
}