116 lines
2.5 KiB
C#
116 lines
2.5 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
public class CamController : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
public Camera cam;
|
|
|
|
[SerializeField]
|
|
[FormerlySerializedAs("smoothTime")]
|
|
private float _smoothTime = 0.2f;
|
|
[SerializeField]
|
|
[FormerlySerializedAs("houseSmoothTime")]
|
|
private float _houseSmoothTime = 0.2f;
|
|
[SerializeField]
|
|
[FormerlySerializedAs("followTargetOnX")]
|
|
private bool _followTargetOnX;
|
|
|
|
[SerializeField]
|
|
[FormerlySerializedAs("smoothFogDuration")]
|
|
private float _smoothFogDuration = 0.5f;
|
|
[SerializeField]
|
|
[FormerlySerializedAs("houseFogStartDist")]
|
|
private float _houseFogStartDist = 50f;
|
|
[SerializeField]
|
|
[FormerlySerializedAs("houseFogEndDist")]
|
|
private float _houseFogEndDist = 50f;
|
|
[SerializeField]
|
|
private Animator anim;
|
|
|
|
private Player followTarget;
|
|
|
|
private Vector3 _posVelocity;
|
|
|
|
private float _fogEndDistanceBefore;
|
|
|
|
private float _fogStartDistanceBefore;
|
|
|
|
public void Warmup()
|
|
{
|
|
base.transform.position = followTarget.transform.position;
|
|
anim.SetBool("HouseMode", value: false);
|
|
anim.SetBool("RoomMode", value: false);
|
|
anim.SetTrigger("Reset");
|
|
anim.SetFloat("CamNew", 0f);
|
|
anim.SetBool("HouseMode", value: false);
|
|
}
|
|
|
|
public void SetTarget(Player followTarget)
|
|
{
|
|
this.followTarget = followTarget;
|
|
}
|
|
|
|
public void Go()
|
|
{
|
|
anim.SetTrigger("Go");
|
|
}
|
|
|
|
public void Win(bool best)
|
|
{
|
|
anim.SetBool("BestWin", best);
|
|
anim.SetTrigger("Win");
|
|
}
|
|
|
|
public void GameOver()
|
|
{
|
|
anim.SetTrigger("GameOver");
|
|
}
|
|
|
|
public void Revive()
|
|
{
|
|
anim.SetTrigger("Revive");
|
|
}
|
|
|
|
private void FixedUpdate()
|
|
{
|
|
if (followTarget == null)
|
|
{
|
|
return;
|
|
}
|
|
Transform target = followTarget.movePlayer.toMove.transform;
|
|
float smooth = _smoothTime;
|
|
Vector3 targetPos = target.position;
|
|
if (!_followTargetOnX)
|
|
{
|
|
targetPos.x = 0f;
|
|
}
|
|
base.transform.position = Vector3.SmoothDamp(base.transform.position, targetPos, ref _posVelocity, smooth, float.PositiveInfinity, Time.deltaTime);
|
|
base.transform.rotation = followTarget.transform.rotation;
|
|
}
|
|
|
|
private IEnumerator SmoothChangeFogRoutine(bool show)
|
|
{
|
|
float from = RenderSettings.fogEndDistance;
|
|
float to = show ? _houseFogEndDist : _fogEndDistanceBefore;
|
|
for (float t = 0f; t < _smoothFogDuration; t += Time.deltaTime)
|
|
{
|
|
RenderSettings.fogEndDistance = Mathf.Lerp(from, to, t / _smoothFogDuration);
|
|
yield return null;
|
|
}
|
|
RenderSettings.fogEndDistance = to;
|
|
}
|
|
|
|
public void ShopCam(string trigger)
|
|
{
|
|
anim.ResetTrigger("ExitShop");
|
|
anim.SetTrigger(trigger);
|
|
}
|
|
|
|
public void ExitShop()
|
|
{
|
|
anim.SetTrigger("ExitShop");
|
|
}
|
|
}
|