diff --git a/CsCore/CsCoreUnity/Plugins/CsCoreUnity/com/csutil/ui/Components/3d/LookAtBillboard.cs b/CsCore/CsCoreUnity/Plugins/CsCoreUnity/com/csutil/ui/Components/3d/LookAtBillboard.cs index dd83edacf..5578ef28e 100644 --- a/CsCore/CsCoreUnity/Plugins/CsCoreUnity/com/csutil/ui/Components/3d/LookAtBillboard.cs +++ b/CsCore/CsCoreUnity/Plugins/CsCoreUnity/com/csutil/ui/Components/3d/LookAtBillboard.cs @@ -1,18 +1,30 @@ -using System; using UnityEngine; +using UnityEngine.Serialization; namespace com.csutil { public class LookAtBillboard : MonoBehaviour { public Transform targetToLookAt; + public float lerpSpeed = 0; + public float lerpOmega = 20; + private Vector3 _lerpVelocity = Vector3.zero; + public bool onlyRotateAroundY = false; private void OnEnable() { if (targetToLookAt == null) { targetToLookAt = Camera.main.transform; } } private void Update() { - transform.forward = targetToLookAt.forward; + var newForward = targetToLookAt.forward; + if (onlyRotateAroundY) { + newForward = Vector3.Scale(newForward, new Vector3(1, 0, 1)).normalized; + } + if (lerpSpeed > 0) { + transform.forward = transform.forward.LerpWithVelocity(newForward, ref _lerpVelocity, Time.deltaTime * lerpSpeed, lerpOmega); + } else { + transform.forward = newForward; + } } }