Advertisement
Guest User

Weapon Sway Unity3D

a guest
Jun 28th, 2013
2,792
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.94 KB | None | 0 0
  1. //============================================
  2. // ATTACH THIS TO WEAPON
  3. //
  4. // ATTACH WEAPON TO PLAYER GAMEOBJECT
  5. //============================================
  6.  
  7. using UnityEngine;
  8. using System.Collections;
  9.  
  10. public class WeaponSwayScript : MonoBehaviour {
  11.  
  12.     public float mouseSensitivity = 10f;
  13.     public float maxMoveAmount = 0.5f;
  14.     public float smoothSpeed = 3f;
  15.  
  16.     private Vector3 startPos;
  17.  
  18.     private float factorX;
  19.     private float factorY;
  20.  
  21.     public bool bRotate;
  22.     public float smoothRotationSpeed = 2f;
  23.     public float rotateAmount = 45f;
  24.  
  25.     //============================================
  26.     // FUNCTIONS
  27.     //============================================
  28.  
  29.     void Start()
  30.     {
  31.         startPos = transform.localPosition;
  32.     }
  33.  
  34.     void Update()
  35.     {
  36.         // STORE MOUSE MOVEMENT AMOUNTS, SMOOTH WITH LERP
  37.         factorX = Mathf.Lerp(factorX, -Input.GetAxis("Mouse X") * mouseSensitivity, Time.deltaTime * 10f);
  38.         factorY = Mathf.Lerp(factorY, -Input.GetAxis("Mouse Y") * mouseSensitivity, Time.deltaTime * 10f);
  39.  
  40.         // CLAMP LIMITS
  41.         if (factorX > maxMoveAmount)
  42.             factorX = maxMoveAmount;
  43.  
  44.         if (factorX < -maxMoveAmount)
  45.             factorX = -maxMoveAmount;
  46.  
  47.         if (factorY > maxMoveAmount)
  48.             factorY = maxMoveAmount;
  49.  
  50.         if (factorY < -maxMoveAmount)
  51.             factorY = -maxMoveAmount;
  52.  
  53.         // SET TARGET POSITION (START POSITION + MOUSE MOVEMENT)
  54.         Vector3 targetPos = new Vector3(startPos.x + factorX, startPos.y + factorY, startPos.z);
  55.  
  56.         // APPLY POSITION TO WEAPON, SMOOTH WITH LERP
  57.         transform.localPosition = Vector3.Lerp(transform.localPosition, targetPos, smoothSpeed * Time.deltaTime);
  58.  
  59.         // ROTATION
  60.         if (bRotate)
  61.         {
  62.             float tiltAroundZ = Input.GetAxis("Mouse X") * rotateAmount;
  63.             float tiltAroundX = Input.GetAxis("Mouse Y") * rotateAmount;
  64.             Vector3 target = new Vector3(tiltAroundX, 0f, tiltAroundZ);
  65.             transform.localRotation = Quaternion.Slerp(transform.localRotation, Quaternion.Euler(target), Time.deltaTime * smoothRotationSpeed);
  66.         }
  67.     }
  68.  
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement