작성
·
73
0
플레이어 포지션이 발이기 때문에 카메라가 계속 발을 찍고 있다고 해서 , 플레이어 포지션 값을 좀 올려보려고
float _playerhight = 1.0f; // 캐릭터 원하는 높이
Vector3 playerPosition = player.transform.position + Vector3.up * playerhight;
이 부분을 추가했는데 작동은 되는데 별로 차이가 없는것 같더라구요.. 제대로 한게 맞을까요?
void LateUpdate()
{
float _playerhight = 1.0f; // 캐릭터 원하는 높이
Vector3 playerPosition = _player.transform.position + Vector3.up * _playerhight;
if (_mode == Define.CameraMode.QuarterView)
{
RaycastHit hit;
if(Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall")))
{
// dist : 거리
float dist = (hit.point - _player.transform.position).magnitude * 1.0f;
transform.position = _player.transform.position + _delta.normalized * dist;
}
else
{
transform.position = _player.transform.position + _delta;
transform.LookAt(_player.transform);
}
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
lover123e님, 플레이어의 포지션을 조절하는 코드에 대해서 질문해주셨군요. 코드를 보았을 때, _playerhight
값을 이용하여 플레이어의 위치를 조금 높이는 부분은 올바르게 작성하셨습니다. 하지만 플레이어의 높이를 조정한 뒤 카메라의 시점을 플레이어의 조정된 위치에 맞춰야 하는데, 이 부분에서 실제로 카메라가 플레이어를 바라보는 로직(transform.LookAt(_player.transform);
)이 플레이어의 원래 위치를 그대로 바라보고 있습니다. 따라서, 카메라가 플레이어의 조정된 높이를 올바르게 반영하여 바라볼 수 있도록 transform.LookAt
메소드에 넘겨주는 인자를 조정된 플레이어 위치(playerPosition
)로 바꿔보세요. 예를 들어, 아래와 같이 코드를 수정해볼 수 있습니다:
transform.LookAt(playerPosition);
이렇게 수정한다면 카메라가 플레이어의 상대적으로 높아진 위치를 바라보게 되어, 플레이어의 포지션 변경이 더 명확하게 느껴질 것입니다.