using System.Collections; using System.Collections.Generic; using UnityEngine; public class Run : MonoBehaviour { Vector3 currentEulerAngles; private Rigidbody rb; public int iPushForce = 10; public bool bForward = false; public int iTurnForce = 10; public bool bTurnRight = false; public bool bTurnLeft = false; public int iTiltAngle = 30; public float fTilt = 0.0f; private bool bTiltLeft; private bool bTiltRight; // Use this for initialization void Start () { currentEulerAngles = transform.eulerAngles; rb = GetComponent(); } // Update is called once per frame void Update () { //前進 if (Input.GetKeyDown(KeyCode.UpArrow)) { bForward = true; } if (Input.GetKeyUp(KeyCode.UpArrow)) { bForward = false; } if (bForward) { rb.AddForce(transform.forward * iPushForce); } //左右灣及車身傾斜 if (Input.GetKeyDown(KeyCode.RightArrow)) { bTurnRight = true; bTiltRight = true; } if (Input.GetKeyUp(KeyCode.RightArrow)) { bTurnRight = false; bTiltRight = false; } if (Input.GetKeyDown(KeyCode.LeftArrow)) { bTurnLeft = true; bTiltLeft = true; } if (Input.GetKeyUp(KeyCode.LeftArrow)) { bTurnLeft = false; bTiltLeft = false; } if (bTurnRight) { currentEulerAngles += new Vector3(0, iTurnForce * Time.deltaTime, 0); } if (bTurnLeft) { currentEulerAngles -= new Vector3(0, iTurnForce * Time.deltaTime, 0); } if (bTiltLeft || bTiltRight) { if (bTiltLeft) { if (fTilt <= iTiltAngle) fTilt += iTiltAngle * Time.deltaTime; } if (bTiltRight) { if (fTilt >= (-1) * iTiltAngle) fTilt -= iTiltAngle * Time.deltaTime; } } else { fTilt = Mathf.Lerp(fTilt, 0, Time.deltaTime); } currentEulerAngles.z = fTilt; transform.eulerAngles = currentEulerAngles; } }