You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.3 KiB
33 lines
1.3 KiB
using UnityEngine; |
|
|
|
public class ExampleWheelController : MonoBehaviour |
|
{ |
|
public float acceleration; |
|
public Renderer motionVectorRenderer; // Reference to the custom motion vector renderer |
|
|
|
Rigidbody m_Rigidbody; |
|
|
|
static class Uniforms |
|
{ |
|
internal static readonly int _MotionAmount = Shader.PropertyToID("_MotionAmount"); |
|
} |
|
|
|
void Start() |
|
{ |
|
m_Rigidbody = GetComponent<Rigidbody>(); // Get reference to rigidbody |
|
m_Rigidbody.maxAngularVelocity = 100; // Set max velocity for rigidbody |
|
} |
|
|
|
void Update() |
|
{ |
|
if (Input.GetKey (KeyCode.UpArrow)) // Rotate forward |
|
m_Rigidbody.AddRelativeTorque(new Vector3(-1 * acceleration, 0, 0), ForceMode.Acceleration); // Add forward torque to mesh |
|
else if (Input.GetKey (KeyCode.DownArrow)) // Rotate backward |
|
m_Rigidbody.AddRelativeTorque(new Vector3(1 * acceleration, 0, 0), ForceMode.Acceleration); // Add backward torque to mesh |
|
|
|
float m = -m_Rigidbody.angularVelocity.x / 100; // Calculate multiplier for motion vector texture |
|
|
|
if (motionVectorRenderer) // If the custom motion vector texture renderer exists |
|
motionVectorRenderer.material.SetFloat(Uniforms._MotionAmount, Mathf.Clamp(m, -0.25f, 0.25f)); // Set the multiplier on the renderer's material |
|
} |
|
}
|
|
|