34 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
| 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
 | |
|     }
 | |
| }
 |