From ff74c0073046f0e086eb7d355950bda39937c92c Mon Sep 17 00:00:00 2001 From: smchoi <ws5260@naver.com> Date: 수, 24 7월 2024 09:39:15 +0900 Subject: [PATCH] Fix : display 화면 변경 --- Assets/Korail/Scripts/Action/ActionButton.cs | 115 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 63 insertions(+), 52 deletions(-) diff --git a/Assets/Korail/Scripts/Action/ActionButton.cs b/Assets/Korail/Scripts/Action/ActionButton.cs index 4ac6c65..425c275 100644 --- a/Assets/Korail/Scripts/Action/ActionButton.cs +++ b/Assets/Korail/Scripts/Action/ActionButton.cs @@ -1,6 +1,8 @@ +using System; using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.Animations; public class ActionButton : MonoBehaviour { @@ -12,17 +14,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 +44,18 @@ private bool isEnd; /// <summary> - /// 코루틴이 시작했는지 여부 - /// </summary> - private bool isStart = false; - - - - /// <summary> /// 애니메이션 종료를 시작값으로(VR에서만) /// </summary> public bool VREndStart; void Start() { - initPos = transform.localPosition; + + targetPos = TargetRot; + initPos = transform.localPosition; + + + Initialize(); } @@ -66,18 +72,35 @@ } + + void EndInit() { + if (!isFixed) + { + transform.localRotation = targetRot; - transform.localPosition = targetPos; + } + else + { + transform.localPosition = targetPos; + + } isEnd = true; } void Init() { + if (!isFixed) + { + transform.localRotation = initRot; - transform.localPosition = initPos; + } + else + { + transform.localPosition = initPos; + } isEnd = false; } @@ -105,61 +128,49 @@ if (Run) { t += Speed * Time.deltaTime; - if (!isFixed) { - if(!isEnd && !isStart) + if (isEnd) { - isStart = true; - StartCoroutine(MoveEndAndInit()); + // 초기 회전값까지 애니메이션 + transform.localRotation = Quaternion.Slerp(transform.localRotation, initRot, t); + if (transform.localRotation == initRot) + { + InitValues(false); + } } - + else + { + // 목표 회전값까지 애니메이션 + transform.localRotation = Quaternion.Slerp(transform.localRotation, targetRot, t); + if (transform.localRotation == targetRot) + { + InitValues(true); + + } + } } else { 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); + } } } - - - - } - } - - 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