inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Camera #3

Camera #3 에서 질문입니다. 카메라가 캐릭터 position으로 이동됩니다.

136

Lucas

작성한 질문수 27

0

using UnityEngine;

public class CameraController : MonoBehaviour
{
    [SerializeField]
    Define.CameraMode _mode =  Define.CameraMode.QuaterView; 
    [SerializeField]
    Vector3 _delta = new Vector3(0f, 0f, 0f); 
    [SerializeField]
    GameObject _player = null;
    void Start()
    {
        
    }

    void LateUpdate() 
    {
        if (_mode ==Define.CameraMode.QuaterView)
        {
            RaycastHit hit;
            if (Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall")))
            {
                float dist = (hit.point - _player.transform.position).magnitude * 0.8f;
                transform.position = _player.transform.position + _delta.normalized * dist;
            }
            else
            {
                transform.position = _player.transform.position + _delta;
                transform.LookAt(_player.transform);
            }
        }
    }

    public void SetQuaterView(Vector3 delta)
    {

        _mode = Define.CameraMode.QuaterView;
        _delta = delta;
    }
}

대체 어디가 잘 못 된건지 모르겠습니다 ㅠ

C# unity

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. Lucas님.

카메라가 캐릭터 위치로 이동하는 문제에 대해 언급해주셨는데요, 이 문제는 _delta 값이 (0, 0, 0)으로 설정되어 있어 카메라가 항상 캐릭터의 위치로 이동하게 됩니다. _delta는 캐릭터와 카메라 사이의 상대적인 위치를 나타내는 값이므로, 원하는 카메라의 위치(즉, 캐릭터와의 거리를 포함한 값)로 설정해야 합니다.

  • _delta 값을 올바르게 설정해 주시면, 카메라가 원하는 위치에 올바르게 배치될 것입니다. 예를 들어, _delta = new Vector3(3.75f, 7, -7);로 설정하면 카메라가 캐릭터의 위쪽 뒤쪽 일정 거리에서 위치하게 됩니다.

문제해결에 도움이 될 만한 비슷한 질문들이 있었으니, 관련된 내용을 참고하시면 더 구체적인 이해와 도움이 될 수 있습니다.

  1. CameraController 오류 - 네임스페이스와 멤버 중복 오류에 대한 설명

  2. Raycast에서 카메라 위치를 _delta로 설정해야 하는 이유

    • Raycasting을 활용하여 벽을 감지하고 카메라 줌을 조절하는 로직의 이해에 대한 내용을 포함합니다.

이외에도 카메라 이동 문제를 해결하기 위한 다양한 포스트와 토론이 있으니 참고해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

Lucas

인프런 AI님 Vector3 _delta = new Vecotr3(0, 5.74f, -4.92f);로 값을 부여해도 캐릭터의 pivot 위치로 카메라가 이동합니다.

0

Lucas

아 코드 문제가 아니었네요.

제가 Unity상에서 Main Camera의 SerializedField _delta에 값을 0,0,0으로 하고 있었기 때문입니다. 이 부분을 놓치고 생각도 못하고 있었네요.

UI 기능 관련 질문이 있습니다!

0

34

2

픽셀 좌표 스크린 좌표

0

32

0

전체적으로 코드 읽는게 굉장히 오래 걸리네요...

0

73

2

카메라 #2 수업 캐릭터 쓰러짐 해결

0

84

1

플레이어 움직임이 끝날때, 기울어짐 현상

0

83

1

Input 적용과 관련하여 질문 있습니다.

0

75

1

디버그 불가.. Unity에 연결 불가

0

82

1

달리기 애니메이션 에러

0

88

2

오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다

0

66

1

GetKey 오류

0

109

2

에셋을 어디에 올려두신지 알 수 있나요?

0

107

1

재귀호출? 오류나는데 왜 이래요 ?

0

169

6

Animation blending 파라미터 계산

0

68

1

newPos와 to지점이 겹쳐져야 하는거 아닌가요?

0

97

3

오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다

0

88

2

질문있습니다

0

143

2

아 이거 소스코드 같은거 없나요?

0

142

3

질문 드립니다. string.IsNullOrEmpty(name)

0

87

2

@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?

0

136

2

유니티6 NavMesh 안되는분들

1

176

1

Unity6 Unity-Chan Material 마젠타 문제 해결법

7

527

1

GetComponent<Poolable> 질문드립니다.

0

102

2

UI 불러오지 못함

0

118

2

UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.

0

155

2