From 9fe33c1ae076b0f6501619388e6b4cc872b76f80 Mon Sep 17 00:00:00 2001 From: smchoi <ws5260@naver.com> Date: 수, 31 7월 2024 10:37:31 +0900 Subject: [PATCH] BIgUpdate --- Assets/Korail/Scripts/Action/ActionButton.cs | 104 ++++++++++++++++++++++++--------------------------- 1 files changed, 49 insertions(+), 55 deletions(-) diff --git a/Assets/Korail/Scripts/Action/ActionButton.cs b/Assets/Korail/Scripts/Action/ActionButton.cs index 4ac6c65..6c202ff 100644 --- a/Assets/Korail/Scripts/Action/ActionButton.cs +++ b/Assets/Korail/Scripts/Action/ActionButton.cs @@ -1,6 +1,9 @@ +using System; using System.Collections; using System.Collections.Generic; +using Unity.VisualScripting; using UnityEngine; +using UnityEngine.Animations; public class ActionButton : MonoBehaviour { @@ -12,17 +15,23 @@ /// <summary> /// 애니메이션 속도 /// </summary> - public float Speed =1; + public float Speed; /// <summary> /// 애니메이션 목표 회전값(Euler) 또는 목표 좌표 /// </summary> public Vector3 TargetRot; + /// <summary> + /// 이동 애니메이션 여부 + /// true면 이동 false면 회전 애니메이션 + /// </summary> + public bool isFixed; - public bool isFixed = false; - public float waitForSecond = 0.5f; + private Quaternion targetRot; + + private Quaternion initRot; private Vector3 targetPos; @@ -36,20 +45,16 @@ private bool isEnd; /// <summary> - /// 코루틴이 시작했는지 여부 - /// </summary> - private bool isStart = false; - - - - /// <summary> /// 애니메이션 종료를 시작값으로(VR에서만) /// </summary> public bool VREndStart; void Start() { + + targetPos = TargetRot; initPos = transform.localPosition; + Initialize(); } @@ -68,16 +73,13 @@ void EndInit() { - transform.localPosition = targetPos; isEnd = true; } void Init() { - transform.localPosition = initPos; - isEnd = false; } @@ -106,60 +108,52 @@ { t += Speed * Time.deltaTime; - if (!isFixed) - { - if(!isEnd && !isStart) - { - isStart = true; - StartCoroutine(MoveEndAndInit()); - } - - } - else + if(isFixed) { if (isEnd) { // 초기 좌표까지 애니메이션 - MoveInitPos(); + transform.localPosition = Vector3.Lerp(transform.localPosition, initPos, t); + if (transform.localPosition == initPos) + { + InitValues(false); + } } else { // 목표 좌표까지 애니메이션 - MoveEndPos(); + transform.localPosition = Vector3.Lerp(transform.localPosition, targetPos, t); + if (transform.localPosition == targetPos) + { + InitValues(true); + } } + } else + { + if (isEnd) + { + // 초기 좌표까지 애니메이션 + transform.localPosition = Vector3.Lerp(transform.localPosition, initPos, t); + if (transform.localPosition == initPos) + { + InitValues(false); + } + } + else + { + // 목표 좌표까지 애니메이션 + transform.localPosition = Vector3.Lerp(transform.localPosition, targetPos, t); + if (transform.localPosition == targetPos) + { + isEnd = true; + t = 0; + } + } + } - - + } - } - - private void MoveEndPos() - { - - transform.localPosition = Vector3.Lerp(transform.localPosition, targetPos, t); - if (transform.localPosition == targetPos) - { - InitValues(true); - } - } - - private void MoveInitPos() - { - transform.localPosition = Vector3.Lerp(transform.localPosition, initPos, t); - if (transform.localPosition == initPos) - { - InitValues(false); - } - } - - - IEnumerator MoveEndAndInit() - { - MoveEndPos(); - yield return new WaitForSeconds(waitForSecond); - MoveInitPos(); - isStart = false; } } -- Gitblit v1.8.0