49 lines
1.1 KiB
C#
49 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
public class OrbitCameraByPlayer : MonoBehaviour
|
|
{
|
|
private Transform Player;
|
|
|
|
public Vector3 offset;
|
|
|
|
public float rotateSpeed = 1f;
|
|
|
|
private Camera thisCamera;
|
|
|
|
private float startFieldOfView;
|
|
|
|
public bool isClose;
|
|
|
|
private void Start()
|
|
{
|
|
if (FScriptsHandler.Instance == null)
|
|
{
|
|
Object.Destroy(base.gameObject.GetComponent<OrbitCameraByPlayer>());
|
|
return;
|
|
}
|
|
thisCamera = GetComponent<Camera>();
|
|
Player = FScriptsHandler.Instance.m_PlayerMain.transform;
|
|
base.transform.position = Player.transform.position + offset;
|
|
startFieldOfView = thisCamera.fieldOfView;
|
|
}
|
|
|
|
private void LateUpdate()
|
|
{
|
|
base.transform.LookAt(Player);
|
|
base.transform.Translate(Vector3.right * Time.fixedUnscaledDeltaTime * rotateSpeed);
|
|
if (!isClose)
|
|
{
|
|
thisCamera.fieldOfView = Mathf.Lerp(thisCamera.fieldOfView, 20f, Time.fixedUnscaledDeltaTime);
|
|
}
|
|
else
|
|
{
|
|
thisCamera.fieldOfView = Mathf.Lerp(thisCamera.fieldOfView, startFieldOfView, Time.fixedUnscaledDeltaTime * 3f);
|
|
}
|
|
}
|
|
|
|
public void UpdatePlayerPosition()
|
|
{
|
|
base.transform.position = Player.transform.position + offset;
|
|
}
|
|
}
|