2025-05-15 16:25:40 +02:00

40 lines
1.3 KiB
C#

using UnityEngine;
using UnityEngine.UI;
namespace VRUIP
{
public class PopElement : Element
{
[SerializeField][Range(1,3)] private int popAmount = 1;
private Vector3 _originalPosition;
private Vector3 _popPosition;
private const int POP_SPEED = 1;
private const float POP_DAMPNING = 0.1f;
protected override void Initialize()
{
base.Initialize();
_originalPosition = transform.localPosition;
_popPosition = new Vector3(_originalPosition.x, _originalPosition.y, -popAmount * POP_DAMPNING);
RegisterOnOver(Pop);
RegisterOnOff(ResetPosition);
}
private void Pop()
{
if (transform.localPosition == _popPosition) return;
var newZ = Mathf.MoveTowards(transform.localPosition.z, _popPosition.z, Time.deltaTime * POP_SPEED);
transform.localPosition = new Vector3(_originalPosition.x, _originalPosition.y, newZ);
}
private void ResetPosition()
{
if (transform.localPosition == _originalPosition) return;
var newZ = Mathf.MoveTowards(transform.localPosition.z, _originalPosition.z, Time.deltaTime * POP_SPEED);
transform.localPosition = new Vector3(_originalPosition.x, _originalPosition.y, newZ);
}
}
}