총구에서 화면 정중앙으로 총알 발사
- FPS나 TPS 게임에서는 보통 화면 정중앙에 CrossHair가 존재한다.
- 위와 같은 상황에서 플레이어가 들고 있는 총의 총구에서부터 화면 정중앙의 CrossHair 방향으로 총알을 발사하고자 한다.
1. Cursor 고정
가장 먼저 정중앙에서 커서가 벗어나지 않도록 고정시킨다.
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
- Cursor.lockState
- CursorLockMode.Confined : 플레이 화면 밖으로 커서가 나가지 않음.
- CursorLockMode.Locked : 화면 중앙 좌표에 커서가 고정됨.
- CursorLockMode.None : 일반적인 커서 상태.
- Cursor.visible : 커서 표시 여부 결정.
2. 화면 정중앙으로 Ray 발사하기
Transform firePos;
Vector3 dir;
Ray ray;
void Start()
{
firePos = GameObject.Find("ShotgunFirePos").transform;
dir = Camera.main.ScreenPointToRay(Input.mousePosition).direction;
ray = new Ray(firePos.position, dir);
}
- Camera.main.ScreenPointToRay(Input.mousPosition)
: 카메라에서부터 현재 마우스 위치까지에 대한 Ray. 위에서 커서 고정했으므로 카메라 ~ 화면 정중앙까지에 대한 Ray라고 볼 수 있다.
- ray = new Ray(firePos.position, dir)
: 위에서 구한 Ray 방향으로 총구 위치에서 시작하는 Ray 생성.
3. 해당 방향으로 총알 이동
void Update()
{
transform.position += ray.direction * 50 * Time.deltaTime;
}
- 위에서 발사한 Ray의 방향(ray.direction)으로 총알 계속 이동.