작성
·
10
0
SkyBox
실습에서 화면에 텍스처 렌더링까지는 잘 되는데, 문제는 실행했을 때 WASD 입력을 넣어도 카메라가 움직이질 않습니다.
회전 행렬이 잘못 적용되어서 텍스처가 함께 이동하는 건가 해서 Update
에 아래와 같이 회전을 직접 줘봤는데, 이 때는 카메라 회전이 되어 하늘이 움직이는 것처럼 잘 보입니다.
_camera->GetTransform()->SetRotation(Vec3(0, _rotation, 0));
_rotation += 0.25f * DT;
제공해주신 A-34)+SkyBox에서 다른 데모는 카메라 입력이 잘 되는데, SkyDemo
만 동일한 문제가 발생했습니다. 마찬가지로 카메라 입력이 먹히질 않습니다.
중단점을 찍고 디버깅을 해봐도 InputManager::Update()
와 CameraScript::Update()
가 매 프레임 정상적으로 호출되고 있었습니다.
혹시 SkyDemo
의 특정 초기화 순서나 렌더링 파이프라인 설정이 다른 데모와 달라서 입력 이벤트 처리에 영향을 주는 건 아닌지 궁금합니다.
아직 해결하지 못해서 질문을 올립니다..
답변 2
0
SkyDemo
의 카메라 입력 문제에 대해 추가로 질문드립니다.
혹시 몰라 셰이더에서 viewPos
를 구할 때,
float4 viewPos = mul(float4(input.position.xyz, 1), V);
이렇게 바꿔봤더니, 렌더링된 구체가 이동해서 카메라를 회전시켰을 때 회전이 적용되는 것을 시각적으로 확인할 수 있었습니다.
이 테스트를 통해 CameraScript
의 회전 입력 자체는 정상적으로 작동하는 것을 확인했습니다.
그런데 원래 코드인
float4 viewPos = mul(float4(input.position.xyz, 0), V);
일 때는 카메라를 회전시켜도 텍스처가 시야에 고정된 것처럼 보입니다.
w=0
로 했을 때, 카메라의 이동을 무시하고 회전만 적용하는 것으로 알고 있는데, 왜 회전이 적용된 결과가 보이지 않는 것인지 궁금합니다. 혹시 SkyDemo
에서만 카메라의 회전값이 셰이더로 올바르게 전달되지 않는 이유가 있을까요?
-1
안녕하세요, 인프런 AI 인턴입니다. Jaein Choi님.
카메라 입력이 SkyDemo
에서 정상적으로 작동하지 않는다고 하셨군요. 다른 데모에서는 문제없이 작동하는 것을 보면, SkyDemo
에 특정한 설정이 영향을 미치는 것일 수 있습니다. 일반적으로 이런 문제는 입력 시스템 초기화 문제, 스크립트 업데이트 순서 문제 또는 씬 내 오브젝트의 충돌로 인한 경우가 많습니다.
다음 사항들을 한번 확인해 보시겠어요?
카메라 및 스크립트 초기에 정상적으로 초기화: 시작 시점에서 카메라와 관련된 스크립트 및 오브젝트들이 정상적으로 초기화되지 않았는지 확인해 보세요.
카메라 컨트롤 스크립트 확인: SkyDemo
의 카메라 컨트롤 스크립트에서 InputManager
로부터 입력을 받는 부분이 있는지, 해당 부분이 정상적으로 값을 받아오고 있는지 디버깅해 보세요.
씬 설정 비교: 다른 데모와 SkyDemo
비교하여 씬 설정, 오브젝트 레이어, 태그 등을 살펴보세요. 특히, 카메라의 태그가 설정되어 있는지 확인하세요.
Update 호출 순서 확인: SkyDemo
에서 호출 순서가 잘못되어 필요한 수치가 제때 계산되지 않거나 전달되지 않는 상황이 있을 수 있습니다.
만약 이 정보로도 해결이 어렵다면, 다음 관련된 질문 및 답변 링크들을 통해 비슷한 상황을 다룬 사례를 참고하실 수 있습니다:
위의 링크는 유니티에서 발생할 수 있는 비슷한 문제를 다룹니다. 이런 문제들은 종종 설정이나 스크립트 로직에서 발생하곤 하니, 다른 프로젝트들과도 비교하여 설정을 점검해 보시는 것을 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.