- 키보드를 이용한 카메라 이동 및 마우스를 이용한 회전
- 마우스 우클릭 후 드래그를 통해 해당 방향으로 카메라가 회전하며,
- WASD를 이용하여 카메라가 줌인, 줌아웃 및 양 옆으로 이동함.
- 카메라가 회전을 하였어도, 회전한 기준으로 줌인, 줌아웃, 이동 동작을 알맞게 수행함
void Update()
{
float currentPositionX = Camera.main.transform.position.x;
float currentPositionY = Camera.main.transform.position.y;
float currentPositionZ = Camera.main.transform.position.z;
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Camera.main.transform.Translate(h, 0, 0);
Camera.main.transform.Translate(0, 0, v);
if (Input.GetKey(KeyCode.Q))
{
Camera.main.transform.position = new Vector3(currentPositionX, currentPositionY + 1f, currentPositionZ);
}
if (Input.GetKey(KeyCode.E))
{
Camera.main.transform.position = new Vector3(currentPositionX, currentPositionY - 1f, currentPositionZ);
}
if (Input.GetMouseButtonUp(0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
if (hit.transform == null)
return;
}
}
if (Input.GetMouseButtonDown(1))
{
isNeedToCameraRotation = true;
}
if (Input.GetMouseButtonUp(1))
{
isNeedToCameraRotation = false;
}
if (isNeedToCameraRotation)
{
cameraMove.x += Input.GetAxis("Mouse X") * 1f;
cameraMove.y += Input.GetAxis("Mouse Y") * 1f;
Camera.main.transform.localRotation = Quaternion.Euler(-cameraMove.y, cameraMove.x, 0);
}
}