47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
![]() |
// Crest Ocean System
|
|||
|
|
|||
|
// Copyright 2020 Wave Harmonic Ltd
|
|||
|
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace Crest.Examples
|
|||
|
{
|
|||
|
|
|||
|
public class LerpCam : MonoBehaviour
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// The version of this asset. Can be used to migrate across versions. This value should
|
|||
|
/// only be changed when the editor upgrades the version.
|
|||
|
/// </summary>
|
|||
|
[SerializeField, HideInInspector]
|
|||
|
#pragma warning disable 414
|
|||
|
int _version = 0;
|
|||
|
#pragma warning restore 414
|
|||
|
|
|||
|
[SerializeField] float _lerpAlpha = 0.1f;
|
|||
|
[SerializeField] Transform _targetPos = null;
|
|||
|
[SerializeField] Transform _targetLookatPos = null;
|
|||
|
[SerializeField] float _lookatOffset = 5f;
|
|||
|
[SerializeField] float _minHeightAboveWater = 0.5f;
|
|||
|
|
|||
|
SampleHeightHelper _sampleHeightHelper = new SampleHeightHelper();
|
|||
|
|
|||
|
void Update()
|
|||
|
{
|
|||
|
if (OceanRenderer.Instance == null || _targetPos == null)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
_sampleHeightHelper.Init(transform.position, 0f);
|
|||
|
_sampleHeightHelper.Sample(out var h);
|
|||
|
|
|||
|
var targetPos = _targetPos.position;
|
|||
|
targetPos.y = Mathf.Max(targetPos.y, h + _minHeightAboveWater);
|
|||
|
|
|||
|
transform.position = Vector3.Lerp(transform.position, targetPos, _lerpAlpha * OceanRenderer.Instance.DeltaTime * 60f);
|
|||
|
transform.LookAt(_targetLookatPos.position + _lookatOffset * Vector3.up);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|