์นด๋ฉ๋ผ๊ฐ ์๋์ชฝ 90๋๊น์ง ๋์๊ฐ๋๋ฐ, ์์ชฝ 90๋(-90๋, 270~360๋ ๋ถ๋ถ)๋ก๋ ์ ๋์๊ฐ๋ ๋ถ๋ถ
์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์์ ํด์ผ๋ ์ง ๋ชจ๋ฅด๊ฒ ์ด์
void control_vision()
ย ย {
ย ย ย ย if (camPosition == null) return;
ย ย ย ย Vector3 _rotate = camPosition.transform.rotation.eulerAngles + new Vector3(Input.GetAxisRaw("Mouse Y"), Input.GetAxisRaw("Mouse X"), 0) * vision_sensitivity * Time.deltaTime * 30;
ย ย ย ย _rotate.x = Mathf.Clamp(_rotate.x, -90, 90);
ย ย ย ย camPosition.transform.rotation = Quaternion.Euler(_rotate);
ย ย ย ย _rigidbody.rotation *= Quaternion.Euler(0, Input.GetAxisRaw("Mouse X") * vision_sensitivity * Time.deltaTime * 30, 0);
ย ย }
์ผ์ ์๋ ์ ํ์ด ์๋๊ฐ? ์๋๋ฉด ์ถ์ ์์๋๋ก ๋๋ ค๋ณด์ ์ด๊ฑธ๋ก ๋๋ฉด ์ค์ผ๋ฌ ๋ฌธ์ ๋ ์๋
์์ ๋ณด๋ ๊ฒ์ ์์ (0,0,0)์ผ๋ก ๊ฐ์ ํ์ ๋์๋ฅผ ๋ฐ๋ผ๋ณด๋ ์๊ฐ ์ค์ ๋ก๋ ์์ ๊ฐ๋๊ฐ ๋์ด์ผ ํ์ง๋งTransform์์ Quaternion์ Euler๋ก ๋ณํํ๋ฉด๊ทธ ๊ฐ์ด 359๋ ๊ทผ์ฒ์ ์์๋ก ํํ๋๋ค์ด ๊ฐ์ ๊ทธ๋๋ก Clamp(-90, 90) ํ๋ฉด359๊ฐ 90์ผ๋ก ์๋ฆฌ๋ฉด์๊ฒฐ๊ณผ์ ์ผ๋ก ์๋๋ฅผ ๊ฐ์ ๋ก ๋ณด๊ฒ ๋๋ค์ํ์ ์ข์ฐ ์ ๋ ฅ์๋ณ๋์ ๋ณ์๋ก ๊ณ์ฐํ๊ณ Clampํ ๋ค๊ทธ ๊ฒฐ๊ณผ๋ง์ Quaternion์ผ๋ก ๋ณํํด์นด๋ฉ๋ผ์ ์บ๋ฆญํฐ ํธ๋์คํผ์ ์ ์ฉํด์ผ ํ๋ค - dc App
๊ทธ๋์ ์นด๋ฉ๋ผ ์์ฒด์ -90๋๋ฅผ ์ฃผ๊ณ 0~180๋๋ก ํด๋จํํ๋๋ฐ ์ฌ์ ํ 90๋์ ๋๋ฌํ์ ๋ ์์ ์ด ์๋ํ๋๋ก ์์ง์ด์ง ์๋ ๋ฌธ์ ๊ฐ ์์.. ์ฟผํฐ๋์ธ ์ฐ์ฐ ํ ๋ ๋ฌธ์ ๊ฐ ์๋๊ฑฐ ๊ฐ์๋ฐ transform.localEulerAngles์ ๋ชฉํ ๋ฒกํฐ ๋ฃ์ผ๋๊น ํด๊ฒฐ๋๊ธด ํ์