Trigger.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Valve.VR;
  5. public class Trigger : MonoBehaviour
  6. {
  7. public float Axis;//button press %
  8. public Vector2 angle; //turn out limit
  9. public SteamVR_Action_Single triggerAxis=SteamVR_Input.GetAction<SteamVR_Action_Single>("Trigger"); //input
  10. public SteamVR_Action_Boolean triggerClick=SteamVR_Input.GetAction<SteamVR_Action_Boolean>("TriggerClick"); //input
  11. public PrimitiveWeapon primitiveWeapon; //weapon trigger sticked to
  12. public ManualReload manualReload; //weapon reload handler
  13. public bool isClick; //if trigger pressed
  14. public enum TypeShoot
  15. {
  16. Safety,
  17. Semi,
  18. Automatic,
  19. }
  20. ;public TypeShoot typeShoot;//safeguard
  21. void Start()
  22. {
  23. primitiveWeapon = GetComponentInParent<PrimitiveWeapon> ();
  24. manualReload = primitiveWeapon.GetComponentInChildren<ManualReload> ();
  25. }
  26. public void customUpdate(CustomHand hand)
  27. {
  28. if (triggerClick.GetStateUp (hand.handType)) {
  29. isClick = false;
  30. }
  31. switch (typeShoot) {
  32. case TypeShoot.Semi:
  33. if (!isClick && triggerClick.GetStateDown (hand.handType)) {
  34. if (manualReload.typeReload == ManualReload.TypeReload.Revolver) {
  35. manualReload.RevolverNextBullet ();
  36. }
  37. if (manualReload.reloadFinish && primitiveWeapon.Shoot ()) {
  38. isClick = true;
  39. if (manualReload.typeReload == ManualReload.TypeReload.Slider) {
  40. manualReload.enabled = true;
  41. }
  42. }
  43. }
  44. break;
  45. case TypeShoot.Automatic:
  46. if (triggerClick.GetState (hand.handType) && manualReload.reloadFinish && primitiveWeapon.Shoot ()) {
  47. if (manualReload.typeReload == ManualReload.TypeReload.Slider) {
  48. manualReload.enabled = true;
  49. }
  50. }
  51. break;
  52. default:
  53. break;
  54. }
  55. Axis=triggerAxis.GetAxis (hand.handType);
  56. transform.localEulerAngles = new Vector3 (Mathf.Lerp (angle.x, angle.y, Axis), 0);
  57. if (manualReload.typeReload == ManualReload.TypeReload.Revolver) {
  58. manualReload.CustomRevolverUpdate ();
  59. }
  60. }
  61. }