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 같은 키워드로 검색해봤는데도 검색이 안 돼서 질문글로 남기게 됐다 ㅠ
해당 댓글은 삭제되었습니다.
입력할 때마다 움직임이 바뀌는데 시퀀스로 사용할 수 있음?
DOBlendableRotate()임
DOKill( false ) 해봤음?
바로 되네 고맙다
DoKill()이랑 DoKill(false)랑 뭐가다름?
DOKill로 트윈을 끝내는데 true로 하면 함수를 목표값으로 설정한 다음에 트윈을 종료하고 false로 하면 그 자리에서 종료하는 걸로 알고 있음
DoTween.Kill(오브젝트); 도 안통함?
해당 댓글은 삭제되었습니다.
ㄳㄳ