로그라이크 게임 제작 04
로그라이크 게임 제작 04
Summary 카메라의 화각을 조절하는 방법을 구현하기 위해 Rigidbody를 추가해야 Raycast가 제대로 작동한다는 것을 발견했다. Player.cs에 캐릭터가 벽에 부딪혔을 때 카메라의 위치와 FOV를 조정하는 코드를 추가하였다.

Raycast가 True인 상황에서도 True가 반환이 안되어 머리를 싸매고 그 이유를 알았다
바로 Rigidbody도 추가되어야 Raycast가 제대로 충돌을 감지할 수 있다는걸…

그리고 Player.cs에 다음과 같은 코드를 추가해줍니다 (고마워요 GPT맨)
//Player.cs
//캐릭터의 -z방향에서 벽을 만났을경우, Camera의 z값을 고정하고 FOV값을 조정
void StopToWall()
{
// -3.5는 Raycast의 거리
//Raycast 시각화
Debug.DrawRay(transform.position, transform.forward * -3.5f, Color.green);
Ray ray = new Ray(transform.position, transform.forward * -3.5f);
isBorder = Physics.Raycast(transform.position, transform.forward, -3.5f, LayerMask.GetMask("Wall"));
if (Physics.Raycast(ray, out RaycastHit hit, 100f))
{
if (!isBorder)
{
Vector3 cameraPosition = VCamera.transform.position;
cameraPosition.z = hit.point.z;
VCamera.transform.position = cameraPosition;
// Calculate the distance between player and wall
float distance = Vector3.Distance(transform.position, hit.point);
//최소화각 최대화각 설정
float fov = Mathf.Lerp(25f, 45f, distance / 7f);
VCamera.m_Lens.FieldOfView = fov;
}
}
}화면 밖을 벗어난 카메라를 제어하는 방법
🎥
Comments
GitHub 계정으로 로그인하여 댓글을 남겨보세요. GitHub 로그인
댓글 시스템 설정이 필요합니다
GitHub Discussions 기반 댓글 시스템을 활성화하려면:
- Giscus 설정 페이지에서 설정 생성
- GISCUS_SETUP_GUIDE.md 파일의 안내를 따라 설정 완료
- Repository의 Discussions 기능 활성화
Repository 관리자만 설정할 수 있습니다.