From d108cf47dabf8b4f42cd1ed0bb2878113e3e07e2 Mon Sep 17 00:00:00 2001 From: Lukas Langrock Date: Sat, 24 Sep 2022 13:10:48 +0200 Subject: [PATCH] add leon's carcontrol script --- game/Assets/CarControl.cs | 108 +++++++++++++++++++++++++++++++++ game/Assets/CarControl.cs.meta | 11 ++++ 2 files changed, 119 insertions(+) create mode 100644 game/Assets/CarControl.cs create mode 100644 game/Assets/CarControl.cs.meta diff --git a/game/Assets/CarControl.cs b/game/Assets/CarControl.cs new file mode 100644 index 0000000..b5b5b56 --- /dev/null +++ b/game/Assets/CarControl.cs @@ -0,0 +1,108 @@ +using System.Xml.Schema; +using System; +using System.Numerics; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class CarControls : MonoBehaviour +{ + private float speed; + private float rotation; + public float MaxLeftSteer = -45; + public float MaxRightSteer = 45; + public float MaxForwardSpeed = 1024; + public float MaxBackwardSpeed = -16; + public float EngineBreakPower = 2f; + public float Acceleration = 1; + public float BreakForce = 10; + public float SteerStraighteningPower = 2f; + // Start is called before the first frame update + void Start() + { + speed = 0; + rotation = 0; + } + + // Update is called once per frame + void Update() + { + float InRot = Input.GetAxis("Horizontal"); + float InSp = Input.GetAxis("Vertical"); + + if(InRot==0) + { + if(speed!=0) + { + rotation -= rotation*SteerStraighteningPower*Time.deltaTime; + } + } + else + { + if((rotation>0 && InRot<0)||(rotation<0 && InRot>0)) + rotation=0; + + rotation += InRot; + } + + rotation -= 0.1f*InRot*Time.deltaTime; + + if(Input.GetAxis("Jump")>0) + { + if(speed>0) + { + speed -= BreakForce*Time.deltaTime; + speed = Mathf.Clamp(speed, 0, MaxForwardSpeed); + } + else + { + speed += BreakForce*Time.deltaTime; + speed = Mathf.Clamp(speed, MaxBackwardSpeed, 0); + } + + if(Mathf.Abs(speed)<2f) + speed = 0; + } + else if(InSp == 0) + { + if(speed>0) + { + speed -= speed*EngineBreakPower*Time.deltaTime; + speed = Mathf.Clamp(speed, 0, MaxForwardSpeed); + } + else + { + speed -= speed*EngineBreakPower*Time.deltaTime; + speed = Mathf.Clamp(speed, MaxBackwardSpeed, 0); + } + } + else if(InSp>0) + { + speed += Acceleration; + } + else if(InSp<0) + { + speed -= Acceleration; + } + + + if(Mathf.Abs(speed)<0.1f) + speed=0; + + if(Mathf.Abs(rotation)<0.1f) + rotation=0; + + rotation = Mathf.Clamp(rotation, MaxLeftSteer, MaxRightSteer); + speed = Mathf.Clamp(speed, MaxBackwardSpeed, MaxForwardSpeed); + if(speed>0) + { + transform.Translate(UnityEngine.Vector3.forward * Mathf.Sqrt(speed) * Time.deltaTime); + transform.Rotate(0f,rotation*Time.deltaTime,0f); + } + else if (speed<0) + { + transform.Translate(UnityEngine.Vector3.back * Mathf.Sqrt(-speed) * Time.deltaTime); + transform.Rotate(0f,-rotation*Time.deltaTime,0f); + } + } +} diff --git a/game/Assets/CarControl.cs.meta b/game/Assets/CarControl.cs.meta new file mode 100644 index 0000000..9733711 --- /dev/null +++ b/game/Assets/CarControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a379f6a4c0c4bda8afe838e061a30bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: