| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityStandardAssets.Characters.FirstPerson;
- namespace UnityCommon
- {
- /// <summary>
- /// µÚÒ»È˳Æ
- /// </summary>
- public class FPState : CameraState
- {
- MyFirstPersonController fpsController;
- CharacterController characterController;
- private Vector3 initPosition;
- private Vector3 initRotation;
- Transform tfCameraPosition;
- private float rotation_y;
- public FPState(Camera camera, Vector3 position, Quaternion rotation, MyFirstPersonController controller) : base(camera)
- {
- fpsController = controller;
- characterController = fpsController.GetComponent<CharacterController>();
- initPosition = position;
- initRotation = rotation.eulerAngles;
- tfCameraPosition = fpsController.transform.Find("CameraPosition");
- rotation_y = rotation.eulerAngles.y;
- //fpsController.transform.rotation = rotation;
- //fpsController.MouseLookInit();
- //initRotation = new Vector3(m_camera.transform.rotation.eulerAngles.x, m_camera.transform.rotation.eulerAngles.y, 0);
- //fpsController?.MouseLookInit();
- }
- private float oldfarClipPlane = 5000;
- public override void Enter()
- {
- base.Enter();
- EnableFPS = false;
- //Vector3 oldPosition = m_camera.transform.position;
- //Quaternion oldRotation = m_camera.transform.rotation;
- //Transform oldParent = m_camera.transform.parent;
- m_camera.transform.SetParent(null);
- fpsController.transform.position = initPosition;
- fpsController.transform.rotation = Quaternion.Euler(0, rotation_y, 0);
- //m_camera.transform.SetParent(oldParent);
- m_camera.transform.SetParent(tfCameraPosition.parent);
- //m_camera.transform.position = oldPosition;
- //m_camera.transform.rotation = oldRotation;
- oldfarClipPlane = m_camera.farClipPlane;
- m_camera.farClipPlane = 500;
- //cameraCtrl.cameraMain.farClipPlane = 500;
- //initRotation = new Vector3(cameraCtrl.tfCameraMain.rotation.eulerAngles.x, cameraCtrl.tfFPSController.rotation.eulerAngles.y, 0);
- //SetCameraPosition(tfCameraPosition.position, Quaternion.Euler(initRotation), () =>
- //{
- // EnableFPS = true;
- // fpsController.MouseLookInit();
- //});
- SetCameraPosition(tfCameraPosition.position, tfCameraPosition.rotation, () =>
- {
- EnableFPS = true;
- fpsController.MouseLookInit();
- });
- }
- private bool EnableFPS
- {
- set
- {
- fpsController.enabled = value;
- characterController.enabled = value;
- }
- get { return fpsController.enabled; }
- }
- public override void Exit()
- {
- base.Exit();
- EnableFPS = false;
- m_camera.farClipPlane = oldfarClipPlane;
- }
- public override void Update()
- {
- base.Update();
- initPosition = fpsController.transform.position;
- initRotation = new Vector3(m_camera.transform.rotation.eulerAngles.x, fpsController.transform.rotation.eulerAngles.y, 0);
- }
- }
- }
|