using UnityEngine; public class VisualButtonPress : MonoBehaviour { [Header("Button Part That Moves")] [SerializeField] private Transform buttonTop; [Header("Press Settings")] [SerializeField] private float pressDistance = 0.04f; [SerializeField] private float moveSpeed = 12f; private Vector3 releasedPosition; private Vector3 pressedPosition; private Vector3 targetPosition; private void Awake() { if(buttonTop == null) { buttonTop = transform; } releasedPosition = buttonTop.localPosition; pressedPosition = releasedPosition + Vector3.down * pressDistance; targetPosition = releasedPosition; } private void Update() { buttonTop.localPosition = Vector3.Lerp( buttonTop.localPosition, targetPosition, moveSpeed * Time.deltaTime ); } public void Press() { targetPosition = pressedPosition; } public void Release() { targetPosition = releasedPosition; } }