Unity, 3D 게임에서 탭 입력 시의 주의점/Camera.main.ScreenPointToRay에서의 에러
탭해도 총알이 앞으로 날지 않는다! 현상
Unity에서 3D 게임을 제작하고 있는 가운데, 탄이 잘 날지 않는다는 것이 있는 것은 아닐까요.
그 원인 중 하나가 Camera.main.ScreenPointToRay()에 기인합니다.
탭한 장소에 탄을 날릴 때의 좌표 취득 방법
원래 탭했을 때 어떻게 좌표 취득할까요?
3D에서는 좌표가 3차원 세계에서의 좌표계(월드 좌표계)가 됩니다.
Unity에는 ScreenPointToRay라는 메서드가 있으며 카메라에서 화면 좌표로 향하는 벡터를 가져올 수 있습니다.
이 벡터를 사용하여 총알을 탭한 방향으로 날립니다.
↓탄 Prefab용 스크립트
public class IgaguriGenerator : MonoBehaviour {
public GameObject igaguriPrefab;
void Update () {
if(Input.GetMouseButtonDown(0)){
GameObject igaguri = Instantiate(igaguriPrefab) as GameObject;
//ScreenPointToRayに因るベクトルの取得
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 worldDir = ray.direction;
igaguri.GetComponent<IgaguriController>().Shoot(worldDir.normalized * 2000);
}
}
}
MainCamera의 좌표에서 탭한 좌표로 향하는 벡터를 가져올 수 있지만 여기에서 MainCamera에 태그를 지정하지 않으면 위 이미지처럼 벡터를 가져오지 못하고 총알을 발사할 수 없습니다.
↓
태그에 MainCamera를 선택합니다.
이제 총알을 발사할 수 있었습니다.
참고서적
Unity 교과서 기타무라 아이미
Reference
이 문제에 관하여(Unity, 3D 게임에서 탭 입력 시의 주의점/Camera.main.ScreenPointToRay에서의 에러), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/minowa_keita/items/62be33f308e128263f8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class IgaguriGenerator : MonoBehaviour {
public GameObject igaguriPrefab;
void Update () {
if(Input.GetMouseButtonDown(0)){
GameObject igaguri = Instantiate(igaguriPrefab) as GameObject;
//ScreenPointToRayに因るベクトルの取得
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 worldDir = ray.direction;
igaguri.GetComponent<IgaguriController>().Shoot(worldDir.normalized * 2000);
}
}
}
Reference
이 문제에 관하여(Unity, 3D 게임에서 탭 입력 시의 주의점/Camera.main.ScreenPointToRay에서의 에러), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/minowa_keita/items/62be33f308e128263f8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)