40 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
} |