private Vector3 _cameraAngle; public float angleSpeed; public GameObject cameraMain; public Vector3 cameraAngle{ get { return _cameraAngle; } set { _cameraAngle = value; cameraMain.transform.DOKill(); cameraMain.transform.DOLocalRotate(_cameraAngle, angleSpeed).SetEase(Ease.Linear); } } public void ChangeAngle(Vector3 _angle, float _speed){ angleSpeed = _speed; cameraAngle = _angle; }



카메라 조작할 일이 많아서 카메라 스크립트 하나 짜서 저렇게 만들고 각도 바꿀 일 있으면 ChangeAngle 호출하면 움직이게 만들었음


코드는 잘 돌아가는데 이미 카메라가 움직이는 동안 다른 카메라 움직임이 짧게 2번 연속으로 들어오면 동작을 제대로 안함


public IEnumerator Test(){ ChangeAngle(new Vector3(0, 45, 0), 5f); yield return new WaitForSeconds(4.5f); ChangeAngle(new Vector3(0, 225, 0), 0.1f); yield return new WaitForSeconds(0.1f); ChangeAngle(new Vector3(0, 235, 0), 5f); }


예를 들면 첫 번째 ChangeAngle이 동작하다가 2번째로 짧게 확 움직이고 3번째로 다시 천천히 움직이는 동작을 원하는데

이렇게 짜면 2번째 ChangeAngle이 동작하면 0, 225, 0으로 가긴 하는데 첫 번째 ChangeAngle 동작이 남아서 0, 45, 0으로 순간이동하고

거기서부터 3번째 ChangeAngle이 동작해서 원래는 225 -> 235로 천천히 가는 걸 의도했는데 225 -> 45 -> 235가 됨


그래서 원래는 땜빵용으로 행동 겹치지 말라고 angleSpeed랑 WaitForSeconds를 딱딱 맞춰서 만들었는데

마우스 클릭으로 스킵하거나 하는 함수를 추가하다보니까 시간초가 고정값이 아니게 돼서 결국 문제를 해결해야되게 됨

그래서 위에 쓴것처럼 원래 하던 동작 멈추고 새 동작을 하라고 cameraMain.transform.DOKill(); 도 넣어줬는데 해결이 안되더라


검색으로 해결하고 싶었는데 DOTween을 중복해서 실행시키는 걸 뭐라 검색해야될지 몰라서 duplicate 같은 키워드로 검색해봤는데도 검색이 안 돼서 질문글로 남기게 됐다 ㅠ