Better Kicking
This commit is contained in:
		
							parent
							
								
									1549ac217d
								
							
						
					
					
						commit
						89b1ba73ee
					
				@ -1,7 +0,0 @@
 | 
				
			|||||||
fileFormatVersion: 2
 | 
					 | 
				
			||||||
guid: 21037762408ec1942ae9b93b6b1413e7
 | 
					 | 
				
			||||||
DefaultImporter:
 | 
					 | 
				
			||||||
  externalObjects: {}
 | 
					 | 
				
			||||||
  userData: 
 | 
					 | 
				
			||||||
  assetBundleName: 
 | 
					 | 
				
			||||||
  assetBundleVariant: 
 | 
					 | 
				
			||||||
@ -16,8 +16,9 @@ public class iamagun : MonoBehaviour
 | 
				
			|||||||
    private Vector3 offsetPosition;
 | 
					    private Vector3 offsetPosition;
 | 
				
			||||||
    private Quaternion offsetRotation;
 | 
					    private Quaternion offsetRotation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Vibration variables
 | 
					    // Vibration variables
 | 
				
			||||||
    private float vibrationDelay = 0.05f;      // Delay before the vibration starts
 | 
					    private float vibrationDelay = 0.1f;      // Delay before the vibration starts
 | 
				
			||||||
    private float vibrationDuration = 0.5f;   // Duration of the vibration
 | 
					    private float vibrationDuration = 0.5f;   // Duration of the vibration
 | 
				
			||||||
    private float vibrationIntensity = 1.0f;  // Intensity of the vibration
 | 
					    private float vibrationIntensity = 1.0f;  // Intensity of the vibration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -37,7 +38,7 @@ public class iamagun : MonoBehaviour
 | 
				
			|||||||
    // Update is called once per frame
 | 
					    // Update is called once per frame
 | 
				
			||||||
    void Update()
 | 
					    void Update()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (!isKicking && OVRInput.IsControllerConnected(OVRInput.Controller.RTouch))
 | 
					        if (OVRInput.IsControllerConnected(OVRInput.Controller.RTouch))
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // Get the local position and rotation of the controller
 | 
					            // Get the local position and rotation of the controller
 | 
				
			||||||
            Vector3 controllerLocalPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch);
 | 
					            Vector3 controllerLocalPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch);
 | 
				
			||||||
@ -52,7 +53,9 @@ public class iamagun : MonoBehaviour
 | 
				
			|||||||
            transform.rotation = finalRotation;
 | 
					            transform.rotation = finalRotation;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (OVRInput.GetDown(shootButton))
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (OVRInput.GetDown(shootButton) && !isKicking)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            simpleShoot.StartShoot();
 | 
					            simpleShoot.StartShoot();
 | 
				
			||||||
            audio.Play();
 | 
					            audio.Play();
 | 
				
			||||||
@ -79,7 +82,6 @@ public class iamagun : MonoBehaviour
 | 
				
			|||||||
        // Stop the vibration
 | 
					        // Stop the vibration
 | 
				
			||||||
        OVRInput.SetControllerVibration(0, 0, OVRInput.Controller.RTouch);
 | 
					        OVRInput.SetControllerVibration(0, 0, OVRInput.Controller.RTouch);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    IEnumerator KickGun()
 | 
					    IEnumerator KickGun()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // Set the kick animation flag to true
 | 
					        // Set the kick animation flag to true
 | 
				
			||||||
@ -88,14 +90,25 @@ public class iamagun : MonoBehaviour
 | 
				
			|||||||
        // Remember the initial rotation of the gun
 | 
					        // Remember the initial rotation of the gun
 | 
				
			||||||
        Quaternion initialRotation = transform.rotation;
 | 
					        Quaternion initialRotation = transform.rotation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Rotate the gun on the X-axis
 | 
					        // Calculate the target rotation after the kick
 | 
				
			||||||
        transform.Rotate(Vector3.right, -kickRotationAmount);
 | 
					        Quaternion targetRotation = initialRotation * Quaternion.Euler(-kickRotationAmount, 0f, 0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Wait for the kick duration
 | 
					        // Progress variable for smooth interpolation
 | 
				
			||||||
        yield return new WaitForSeconds(kickDuration);
 | 
					        float elapsedTime = 0f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Reset the rotation of the gun
 | 
					        while (elapsedTime < kickDuration)
 | 
				
			||||||
        transform.rotation = initialRotation;
 | 
					        {
 | 
				
			||||||
 | 
					            // Interpolate the rotation smoothly
 | 
				
			||||||
 | 
					            transform.rotation = Quaternion.Slerp(initialRotation, targetRotation, elapsedTime / kickDuration);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Increment the elapsed time
 | 
				
			||||||
 | 
					            elapsedTime += Time.deltaTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            yield return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Ensure the final rotation is exactly the target rotation
 | 
				
			||||||
 | 
					        transform.rotation = targetRotation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Set the kick animation flag to false
 | 
					        // Set the kick animation flag to false
 | 
				
			||||||
        isKicking = false;
 | 
					        isKicking = false;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user