인프런 커뮤니티 질문&답변

lover123e님의 프로필 이미지
lover123e

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Camera #3

플레이어 포지션 변경 하기 위해 코드 추가

작성

·

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

이렇게 수정한다면 카메라가 플레이어의 상대적으로 높아진 위치를 바라보게 되어, 플레이어의 포지션 변경이 더 명확하게 느껴질 것입니다.

lover123e님의 프로필 이미지
lover123e

작성한 질문수

질문하기