필수요소
- 퍼즐 디자인
- 플레이어 캐릭터 및 컨트롤
- 퍼즐 해결 시스템
- 장애물 및 트랩
- 목표 지점
- 게임 진행 상태 및 저장
- 사운드 및 음악
private void LateUpdate()
{
isFPSMode = inputHandler.cameraChange;
if (inputHandler.mouseDelta != prevMouseDelta)
{
cameraCurRot.x += inputHandler.mouseDelta.x * lookSentitivity;
cameraCurRot.y += inputHandler.mouseDelta.y * lookSentitivity;
if (isFPSMode)
FPSCameraLook();
else
TPSCameraLook();
prevMouseDelta = inputHandler.mouseDelta;
}
}
InputAction lookAction = playerActionMap.FindAction("Mouse");
lookAction.performed += context => mouseDelta = context.ReadValue<Vector2>().normalized;
lookAction.canceled += context => mouseDelta = Vector2.zero;
그러나 이번에는 마우스도 다른 키와 동일하게 입력이 없을 때는 0 벡터를 입력하게 할 수 있다는 것을 알게 되어 이 문제를 수정할 수 있었다.
이전에는 이를 마우스를 이동시키는 부분에서 조작해야 해서 카메라가 플레이어를 따라가야하는 로직은 마우스의 변동과 관계없이 적용되어야하므로 이를 분리하는 등의 행동이 필요했는데 이제 그럴 필요가 없어졌다.
void Look()
{
float mouseX = inputHandler.mouseDelta.x * Time.deltaTime * cameraSensitivity;
float mouseY = inputHandler.mouseDelta.y * Time.deltaTime * cameraSensitivity;
camRotY += mouseX;
camRotX -= mouseY;
camRotX = Mathf.Clamp(camRotX, minRotX, maxRotX);
camera.transform.position = fpsCameraTransform.position;
camera.transform.rotation = Quaternion.Euler(camRotX, camRotY, 0);
transform.rotation = Quaternion.Euler(0, camRotY, 0);
}