Added extra sliders for audio (not audio logic not yet implemented) and got elevator outer buttons firing.
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
using System.Collections;
|
||||
|
||||
public class HoverSlideButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
|
||||
{
|
||||
public RectTransform buttonTransform;
|
||||
|
||||
public Vector2 offPosition = Vector2.zero;
|
||||
public Vector2 onPosition = new Vector2(30f, 0f); // e.g., slide 30px to the right
|
||||
|
||||
public float slideDuration = 0.2f;
|
||||
|
||||
private Coroutine slideCoroutine;
|
||||
private bool isOn = false;
|
||||
|
||||
private void Reset()
|
||||
{
|
||||
buttonTransform = GetComponent<RectTransform>();
|
||||
}
|
||||
|
||||
public void OnPointerEnter(PointerEventData eventData)
|
||||
{
|
||||
SlideToPosition(onPosition);
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject); //3d oneshot sound
|
||||
}
|
||||
|
||||
public void OnPointerExit(PointerEventData eventData)
|
||||
{
|
||||
if (!isOn) SlideToPosition(offPosition);
|
||||
|
||||
}
|
||||
|
||||
public void SetOnState(bool on)
|
||||
{
|
||||
isOn = on;
|
||||
SlideToPosition(on ? onPosition : offPosition);
|
||||
}
|
||||
|
||||
private void SlideToPosition(Vector2 target)
|
||||
{
|
||||
if (slideCoroutine != null)
|
||||
StopCoroutine(slideCoroutine);
|
||||
|
||||
slideCoroutine = StartCoroutine(SmoothSlide(target));
|
||||
}
|
||||
|
||||
private IEnumerator SmoothSlide(Vector2 target)
|
||||
{
|
||||
Vector2 startPos = buttonTransform.anchoredPosition;
|
||||
float timeElapsed = 0f;
|
||||
|
||||
while (timeElapsed < slideDuration)
|
||||
{
|
||||
buttonTransform.anchoredPosition = Vector2.Lerp(startPos, target, timeElapsed / slideDuration);
|
||||
timeElapsed += Time.deltaTime;
|
||||
yield return null;
|
||||
}
|
||||
|
||||
buttonTransform.anchoredPosition = target;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user