CameraController.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.InputSystem;
  5. //using UnityGameFramework.Runtime;
  6. using UnityStandardAssets.Characters.FirstPerson;
  7. namespace UnityCommon
  8. {
  9. [DisallowMultipleComponent]
  10. public sealed class CameraController : MonoBehaviour
  11. {
  12. public static CameraController Instance;
  13. public InputCtrlCamera.CameraCtrlActions inputActions;
  14. [HideInInspector]
  15. public CharacterController characterController;
  16. [HideInInspector]
  17. public MyFirstPersonController fpsController;
  18. [HideInInspector]
  19. public Camera cameraMain;
  20. public CameraState cameraStateCurrent;
  21. void Awake()
  22. {
  23. Instance = this;
  24. inputActions = new InputCtrlCamera().CameraCtrl;
  25. inputActions.Enable();
  26. characterController = GetComponent<CharacterController>();
  27. fpsController = GetComponent<MyFirstPersonController>();
  28. cameraMain = transform.Find("CameraMain").GetComponent<Camera>();
  29. //cameraMain.transform.SetParent(null);
  30. }
  31. public void Enter(CameraState cameraState)
  32. {
  33. cameraStateCurrent?.Exit();
  34. cameraState.preCameraState = cameraStateCurrent;
  35. cameraStateCurrent = cameraState;
  36. cameraStateCurrent?.Enter();
  37. }
  38. private bool isPointerOverUI { get { return Utility.IsPointerOverUIObject(); } }
  39. private void LateUpdate()
  40. {
  41. var vec2Move = inputActions.Move.ReadValue<Vector2>();
  42. var axis_updown = inputActions.UpDown.ReadValue<float>();
  43. if (!isPointerOverUI)
  44. {
  45. Vector3 vec3Move = new Vector3(vec2Move.x, vec2Move.y, axis_updown);
  46. cameraStateCurrent?.OnMove(vec3Move);
  47. var vec2Rotate = inputActions.Rotate.ReadValue<Vector2>();
  48. cameraStateCurrent?.OnRotate(vec2Rotate);
  49. var sv = inputActions.Zoom.ReadValue<float>();
  50. //var sv = Mouse.current.scroll.ReadValue().y; //Input.GetAxis("Mouse ScrollWheel");
  51. cameraStateCurrent?.OnZoom(sv * 0.001f);
  52. var translation = inputActions.Translation.ReadValue<Vector2>();
  53. cameraStateCurrent?.OnTranlation(translation);
  54. var addSpeed = inputActions.AddSpeed.ReadValue<float>();
  55. cameraStateCurrent?.OnAddSpeed(addSpeed);
  56. var speedScale = inputActions.SpeedScale.ReadValue<float>();
  57. cameraStateCurrent?.OnChangeSpeedScale(speedScale);
  58. }
  59. }
  60. private void Update()
  61. {
  62. cameraStateCurrent?.Update();
  63. }
  64. }
  65. }