📌 개요
ScreenToWorldPoint 을 사용하여 객체를 생성했는데 객체가 보이지 않는 문제
해결책
① Input.mousePosition.z 값을 0 혹은 Mathf.Abs(Camera.main.transform.position.z)으로 설정
📌 문제 상황
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Vector3 mousePos = Input.mousePosition;
CreateJemView(_camera.ScreenToWorldPoint(mousePos));
}
}
코드 설명
- 마우스 입력을 받아 [ mousePos ] 변수에 값을 저장
- [ mousePos ] 을 월드 좌표계로 변환하여 광물 생성
- CreateJemView(Vector3 createPosition) : 광물을 생성하는 함수
화면을 클릭했을 때 해당 지점에 광물이 생성되는 로직입니다.
광물은 분명 생성되었지만 어째선지 Game 뷰에서는 확인이 되지 않습니다.
📌 원인 분석 및 해결책
자세히 살펴보면 광물의 Z축 위치가 -10 임을 확인할 수 있습니다.
왜냐하면 ScreenToWorldPoint 는 3D 공간 좌표를 반환하므로, Z축 깊이 값을 설정해야 하기 때문입니다.
이 값은 카메라로부터의 거리로 결정됩니다.
따라서 Z축 깊이의 값을 설정하면 됩니다.
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Vector3 mousePos = Input.mousePosition;
mousePos.z = 10f;
//mousePos.z = Mathf.Abs(_camera.transform.position.z);
CreateJemView(_camera.ScreenToWorldPoint(mousePos));
}
}
※ 2D 게임의 경우 Z 값을 따로 설정하지 않아도 됩니다.
'유니티(Unity) > 이슈 도감' 카테고리의 다른 글
[Unity 이슈] InitializeOnLoad 주의 사항 (0) | 2024.12.23 |
---|---|
[Unity 이슈] 커스텀 패키지 Addressable 이슈 (1) | 2024.12.22 |
[Unity 이슈] 커스텀 패키지 종속성 문제 (1) | 2024.12.21 |
[Unity] 직렬화가 되지 않는 문제 (1) | 2024.12.06 |
[Unity] SpriteAtlas GetSprite 함수가 동작하지 않는 문제 (0) | 2024.12.04 |