Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class Wheel : MonoBehaviour {
- [SerializeField, Range(-1, 1)]
- float _accelerationMultiplier;
- [SerializeField, Range(-1, 1)]
- float _brakeMultiplier;
- [SerializeField, Range(-1, 1)]
- float _steerAngleMultiplier;
- [SerializeField]
- Transform _mesh;
- WheelCollider _wheelCollider;
- #region Properties
- public float Acceleration {
- get {
- return WheelCollider ? WheelCollider.motorTorque : 0;
- }
- set {
- if(WheelCollider) WheelCollider.motorTorque = value * AccelerationMultiplier;
- }
- }
- public float AccelerationMultiplier {
- get { return _accelerationMultiplier; }
- set { _accelerationMultiplier = Mathf.Clamp(value, -1, 1); }
- }
- public float Brake {
- get {
- return WheelCollider ? WheelCollider.brakeTorque : 0;
- }
- set {
- if(WheelCollider) WheelCollider.brakeTorque = value * BrakeMultiplier;
- }
- }
- public float BrakeMultiplier {
- get { return _brakeMultiplier; }
- set { _brakeMultiplier = Mathf.Clamp(value, -1, 1); }
- }
- public Transform Mesh {
- get { return _mesh; }
- set { _mesh = value; }
- }
- public float SteerAngle {
- get {
- return WheelCollider ? WheelCollider.steerAngle : 0;
- }
- set {
- if(WheelCollider) WheelCollider.steerAngle = value * SteerAngleMultiplier;
- }
- }
- public float SteerAngleMultiplier {
- get { return _steerAngleMultiplier; }
- set { _steerAngleMultiplier = Mathf.Clamp(value, -1, 1); }
- }
- public WheelCollider WheelCollider {
- get {
- if(!_wheelCollider) _wheelCollider = GetComponent<WheelCollider>();
- return _wheelCollider;
- }
- }
- #endregion
- void LateUpdate() {
- if(!WheelCollider || !_mesh) {
- enabled = false;
- return;
- }
- Vector3 position;
- Quaternion rotation;
- WheelCollider.GetWorldPose(out position, out rotation);
- Mesh.position = position;
- Mesh.rotation = rotation;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment