처음엔 화면이 이렇게 이동되지 않았다.
enum으로 Type을 지정해놓고 swtich 문으로 사용하고있었는데
switch 문 안에 w키랑 s키를 누르면 Lerp를 돌리고 Type 값을 할당해라 했더니
딱 한번만 돌리고 Type 값이 변해서 처음에는 어떻게 해야할까 고민이 되었다.
한번만 돌던 코드
switch ((int)cameraType)
{
case 0: //카메라 시점 아래 보고 있을 때
if(Input.GetKeyDown(KeyCode.W)
{
this.cameraRig.transform.position = Vector3.Lerp(cameraRig.transform.position, this.defaultCamPos, this.transitionSpeed);
this.cameraRig.transform.rotation = Quaternion.Lerp(cameraRig.transform.rotation, Quaternion.Euler(30, 0, 0), this.transitionSpeed);
this.cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, 60f, this.fieldOfViewSpeed * Time.deltaTime);
this.cameraType = eCameraType.Normal;
break;
}
}
변경된 코드에서는 Type 값을 따로 상태에 따라 구별해놓았고, 그랬더니 Lerp가 한번만이 아니라 내가 결정한 목표 값까지 잘 이동하기 시작했다.
변경된 코드
//Update 문 안에 있음.
//상태변환 알려주기
if(this.cameraType == eCameraType.Normal) // 보통상태일 때
{
if (Input.GetKeyDown(KeyCode.W))
{
this.cameraType = eCameraType.MyCard; //내 카드로 상태변환
}
else if (Input.GetKeyDown(KeyCode.S))
{
this.cameraType = eCameraType.Down; //아래로 상태변환
}
}
// else if 문으로 Board를 보고있는상태일 때 등.. 있다.
switch ((int)cameraType)
{
case 0: //카메라 시점 아래 보고 있을 때
this.cameraRig.transform.position = Vector3.Lerp(cameraRig.transform.position, this.defaultCamPos, this.transitionSpeed);
this.cameraRig.transform.rotation = Quaternion.Lerp(cameraRig.transform.rotation, Quaternion.Euler(30, 0, 0), this.transitionSpeed);
this.cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, 60f, this.fieldOfViewSpeed * Time.deltaTime);
this.cameraType = eCameraType.Normal;
break;
}
'Inscryption 모작 개발일지' 카테고리의 다른 글
Inscryption 모작 개발일지 - 4일차 (0) | 2023.10.11 |
---|---|
Inscryption 모작 개발일지 - 3일차 (0) | 2023.10.10 |
Inscryption 모작 개발일지 - 2일차 [ 카드 ], 버튼누르면 세팅, 기존 씬으로 옮기기 (0) | 2023.09.25 |
Inscryption 모작 개발일지 - 1일차 [판 구성, 카메라 이동[미완]] (0) | 2023.09.22 |
Inscryption 모작 개발일지 방향성 (0) | 2023.09.21 |