Inscryption 모작 개발일지

Inscryption 모작 개발일지 - 2일차 [카메라 시점변환] / enum, Lerp

다모아 2023. 9. 25. 14:51

 

 

처음엔 화면이 이렇게 이동되지 않았다.

 

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;
}