I am trying to build a space sim/shooter type game kind of like elite dangerous but obviously much less feature because I am just starting out and learning, so I do not have the required experience or knowledge as of yet. I would like to add to it over timer as I learn new skills and gain knowledge. I have my movement script mostly working the way I would like but am having trouble with a couple things.
When the curSpeed is 0 I would like the ship to come to a complete stop, as of right now when I set the curSpeed to 0 in the inspector, it keeps moving either forward or backwords. The other thing is that I would like the speed to increment by maxAcceleration when the plus key is held down, or -maxAcceleration when the minus key is held down. As of right now it jumps by about 5 even when just tapping either button. I am including my script bellow. Any help would be greatly appreciated.
Ps. I am using Unity 5.5
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Space_Shooter_Proto
{
[RequireComponent(typeof(Rigidbody))]
public class ThrustTtest : MonoBehaviour
{
//Variables - Define Ship Movement
private int maxSpeed = 150;
private int minSpeed = 0;
private int maxRevSpeed = -50;
private int maxAcceleration = 1;
public int curSpeed;
private Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
ShipForwardThrust();
}
void ShipForwardThrust()
{
rb.AddForce(Vector3.forward * curSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.Equals))
{
curSpeed += maxAcceleration;
if (curSpeed == maxSpeed || curSpeed > maxSpeed)
{
curSpeed = maxSpeed;
}
}
if (Input.GetKey(KeyCode.Minus))
{
ShipReverseThrust();
}
Debug.Log("Current Speed is " + curSpeed);
}
void ShipReverseThrust()
{
curSpeed -= maxAcceleration;
if (curSpeed == maxRevSpeed || curSpeed < maxRevSpeed)
{
curSpeed = maxRevSpeed;
}
}
}
}