Hi, I’m pretty new to programming and Unity. So i wanted to make a game object get faster over time until a specific time. And that worked with the script, but I found out that there is no friction if you use transform.position, so I want to change it to transform.Translate because it should work then. But since I’m not very experienced and all I’m not able to do it, I already tried it.
Can someone help me to rewrite the script to transform.Translate while retaining its functionality?
public class PlayerMovement : MonoBehaviour
{
public Rigidbody rb;
public float sidewaysForce;
public float upwardForce;
public float minSpeed;
public float maxSpeed;
public float accelerationTime;
private float currentSpeed;
private float time;
void Start()
{
currentSpeed = minSpeed;
time = 0;
}
void FixedUpdate()
{
currentSpeed = Mathf.SmoothStep(minSpeed, maxSpeed, time / accelerationTime);
transform.position += Vector3.forward * currentSpeed * Time.deltaTime;
time += Time.deltaTime;
if (Input.GetKey("w"))
{
rb.AddForce(0, upwardForce * Time.deltaTime, 0);
}
if (Input.GetKey("a"))
{
rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0);
}
if (Input.GetKey("d"))
{
rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0);
}
if (Input.GetKey("s"))
{
rb.AddForce(0, -upwardForce * Time.deltaTime, 0);
}
Debug.Log(transform.position);
}
}