ย public class FourWayController : MonoBehaviour
ย ย {
ย ย ย ย private Vector3[] directionalVectors = { Vector3.forward, Vector3.back, Vector3.right, Vector3.left };
ย ย ย ย private Transform _mainCameraTransform;
ย ย ย ย private void Awake()
ย ย ย ย {
ย ย ย ย ย ย _mainCameraTransform = Camera.main.transform;
ย ย ย ย }
ย ย ย ย private void Update()
ย ย ย ย {
ย ย ย ย ย ย var movementVector = new Vector3(CnInputManager.GetAxis("Horizontal"), 0f, 0f);
ย ย ย ย ย ย if (movementVector.sqrMagnitude < 0.00001f) return;
ย ย ย ย ย ย // Clamping
ย ย ย ย ย ย Vector3 closestDirectionVector = directionalVectors[0];
ย ย ย ย ย ย float closestDot = Vector3.Dot(movementVector, closestDirectionVector);
ย ย ย ย ย ย for (int i = 1; i < directionalVectors.Length; i++)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย float dot = Vector3.Dot(movementVector, directionalVectors[i]);
ย ย ย ย ย ย ย ย if (dot < closestDot)
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย closestDirectionVector = directionalVectors[i];
ย ย ย ย ย ย ย ย ย ย closestDot = dot;
ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย }
ย ย ย ย ย ย // closestDirectionVector is what we need
ย ย ย ย ย ย var transformedDirection = _mainCameraTransform.InverseTransformDirection(closestDirectionVector);
ย ย ย ย ย ย transformedDirection.y = 0f;
ย ย ย ย ย ย transformedDirection.Normalize();
ย ย ย ย ย ย transform.position += transformedDirection * Time.deltaTime;
ย ย ย ย }
ย ย }
}
์ด์ ์๋์ ๋ด๊บผ์ ์ด์ ์ํค๋ ค๊ณ .
์ด๋ ๊ฒํด์ ์๋ฌด๊ฒ๋ ์๊ฑด๋๋ฆฌ๊ณ ์์ 0์ผ๋ก๋ง ๋ฐ๊ฟ์ค๊ฑฐ๋ฐ์์๋๋ฐ.. ๋ด ์๊ฐ์ 3d์๋๊ฒ 2d์ ์ ์ฉ๋์๊ทธ๋ฐ๊ฐ? ย ์ข ์ฐ๊ฐ ๋ฐ๋๋๋ฐ.. ์ผ์ชฝ๋๋ฅด๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๊ณ .. ์ค๋ฅธ์ชฝ๋๋ฅด๋ฉด ์ผ์ชฝ์ผ๋ก ๊ฐ๋ค.. ใทใท ์๊ทธ๋ฐ๊ฑธ๊น..
์! ๊ทธ๋ฆฌ๊ณ ์๋๊ฐ ๋๋ฌด ๋๋ฆฐ๋ฐ.. ์๋ ์ด๋ป๊ฒ ...
์ ์ํ์์ z๊ฐ๋ง 0์ผ๋ก ๋ฐ๊ฟจ๋๋ฐ ์ข์ฐ๊ฐ ๋ฐ์ ๋์ ์์ง์ธ๋ค๋ ๊ฑฐ? ์๋ ๋ ๊ฒ์ ๋ฃ์๋๋ฐ ์๋๋ค๋ ๊ฑฐ?
์์ง ํฐ์๋ ์๋ฃ์ด๋ณด๊ณ ๊ทธ๋ฅ ์คํํด์ ์ ๋ํฐ์์ ํ ์คํธ ํด๋ณด๋๊ฐ ์ข์ฐ๊ฐ ๋ฐ๋.. ๊ทธ๋ฆฌ๊ณ ํฐ์ ๋ฃ์ด๋ณด๋๊ฐ.. ํฐ์น๊ฐ ์ธ์์ด ์๋๋๊ฑด ๋ฌด์จ๊ฒฝ์ฐ์ง.. ์ ๋ํฐ์์ ์คํํด๋ดค์๋๋ ๋๋๋ฐ..ใทใท
์ ๋ฐ์ดํธ๋ฌธ์ print(CnInputManager.GetAxis("Horizontal")); ์ด๋ ๊ฒ ๋ฃ์ด์ ์ค์ ๋ก ์ผ์ชฝ์ ๋๋ ์๋ ์ถ๋ ฅ๋๋ ๊ฐ์ด ๋ญ์ง๋ฅผ ๋ด๋ผ -1์ด ๋์์ผ ๋จ
ใ ใ ใ ใ ๋ก๊ทธํจ ๋ฐ์ด๋ณผ๊ฒ
๊ทธ๋ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ข์ฐ๊ฐ ๋ฐ๋์์ผ๋ฉด CnInputManager.GetAxis("Horizontal") ์ -1์ ๊ณฑํด์ฃผ๋ฉด ์ข์ฐ๊ฐ ๋ค์ ๋ฐ์ ๋์ ์ ๋๋ก ๋์ฌ๊ฑฐ์์ ๊ทผ๋ฐ ์ ํํ ์ด๋๊ฐ ์๋ชป๋์๊ณ ์ด๋ค ์๋ฆฌ๋ก ์๋๋๋ ๊ฑด์ง ๋ชจ๋ฅธ ์ฑ ๊ทธ๋ฅ ์๊ธฐ์๋ณ์ผ๋ก๋ง ๋์ด๊ฐ๋ค๋ณด๋ฉด ๋์ค์ ๊ฑท์ก์ ์ ์๊ฒ ๋๋ค
๋ฐ๋๋ก ์์ง์ด๋ฉด ๊ทธ๋ฅ ๋ฐ๋๋ก ์ ์ฉํ๋ฉด ๋๋๊ฑฐ ์๋? * -1.0f
๋ก๊ทธ ๋ฐ์ด๋ณด๋๊ฐ ์ผ์ชฝ๋๋ฅด๋ฉด -1 ์ค๋ฅธ์ชฝ๋๋ฅด๋ฉด 0.2 0.6 ๋ฑ ๋ค์ํ๊ฒ๋์ค์ง๋ง ์ฐ์ ์์๋ ๋์ด.. ์ ์์ ์ธ๊ฑฐ ๊ฐ์๋ฐ ๋ญ์ง..
์ง์ ์๋ฌด๊ฒ๋ ์๊ฑด๋๋ฆฌ๊ณ ์ ๊ฒ๋ง ๊ฑด๋๋ฆฌ๊ณ .. ํ๋ ์ด์ด์๋ ์ค์ง ์ ์คํฌ๋ฆฝํธ๋ง ๋ฌ๋ ค์๊ณ ..
์ด๊ฑด ์ ์ฉํ ๋ถ๋ถ์ ๋ด์ผ ์์ง ์์๊น
๊ทธ๋ฆฌ๊ณ ์๋๊ฐ ๋๋ฆฌ๋ฉด ์๋๋ฅผ ๊ณฑํ๋ฉด ๋์์...
์ ์๋ ๋ก๊ทธ๋๊น -1์ ์๋๊ณ ๋ง์ด๋์ค๊ฐ ํ๋ฌ์ค๊ฐ์ผ๋ก ๋์ค๋ ๊ฑด ๋ง๋ค
ํน์ ์นด๋ฉ๋ผ๋ฅผ ๊ฑฐ๊พธ๋ก ์ค์นํ ๊ฑฐ ์๋? ๊ทธ๋ผ ์์ง์ด๋ ์บ๋ฆญํฐ์ ํฌ์ง์ ๊ฐ์ ํ์ธํด๋ณด๋ฉด ๋จ ์ผ์ชฝ ๋๋ ์ ๋ ์ธ์คํํฐ์ ๊ฐ์ด ๋ง์ด๋์ค๋ก ์ฆ๊ฐํ๋์ง ํ๋ฌ์ค๋ก ์ฆ๊ฐํ๋์ง
์๋ ์๊ธฐ๊ฐ ๋์์ ๋ง์ธ๋ฐ ์๋ ๋ก๊ทธ ๊ฐ๋๋ก ์ด์ง๋ฐ๋ฉด ์ฒ์ฒํ, ์ธ๊ฒ ๋ฐ๋ฉด ๋นจ๋ฆฌ ์ด๋ ๊ฒ ๋ง๋ค๊ฒ ์๋์์
์ผ์ชฝ๋๋ ์๋ ์ค๋ฅธ์ชฝ์ผ๋ก์ด๋ํ๋คํ์ผ๋ ํฌ์ง์ ๊ฐ์ ๋น์ฐ ๋ฐ๋๋ก๋์ด.. ์ผ์ชฝ๋๋ ๋๋ฐ + ๋์ค๊ณ ..
๊ทธ๋ฌ๋ ์คํธ๋ฆฝํธ์์ CnInputManager.GetAxis("Horizontal") ๊ฐ์๋ค speed ๋ณ์๋ฅผ ๊ณฑํด์ ์ข์ฐ๋ก ์์ง์ด์ง ๋ง๊ณ CnInputManager.GetAxis("Horizontal") ์ด 0๋ณด๋ค ํฌ๋ฉด speed ๋ณ์๊ฐ๋งํผ, 0๋ณด๋ค ์์ผ๋ฉด -speed ๊ฐ์ผ๋ก... ์ด๋ ๊ฒ ์์ง์ด๊ฒ ํ๋ฉด ๋จ
ใ ใ ์๋๋ ๊ทธ๋ฅ ์ผ์ ํ๊ฒ ๋นจ๋์ผ๋ฉด ํ๋ ๊ทธ๊ฑด ๊ณฑํ๋์ง ๋ญ ์ด๋ป๊ฒ๋ ํด๋ณผ๊ฒ..
์ํ ใ ใ ใ ใ
์ ๊ทธ๋ผ ์คํฌ๋ฆฝํธ๋ฅผ ํจ ๋ณผ๊ฒ ์ ๊น๋ง
ํ๋ฒ์ ํ๋์ฉ.. ์ฐ์ ์ข์ฐ ๋ฐ์ ๋ถํฐ.. ํ๋ฒ ์คํฌ๋ฆฝํธ์ข ๋ด์ค .. ๋ด ํ๋ก์ ํธ ์ํ๋ ์บ๋ฆญํฐ ์ค๋ธ์ ํธ์ ์กฐ์ด์คํฑ ์ฝ๋ ํ๋์ ๋ฒํผ canvas๋ ๊ทธ๋๋ก ์์ ์์๋๊ฑฐ ๊ฐ์ ธ์จ๊ฑฐ์ผ ๋ณต์ฌํด์.
์ ์คํฌ๋ฆฝํธ๋ ๋ํํ ์ค๋ช ํ๊ธฐ ์ข ํ๋ ๋ฐ... ๊ทธ๋ฅ ์ฝ๋๋ฅผ ๋ฐ๊ฟ๋ด๋ผ //Clamping ์๋ซ๋ถ๋ถ์ ๋ค ์ฃผ์์ฒ๋ฆฌ๋ฅผ ํ๋ ์ง ๋ ๋ ค๋ฒ๋ฆฌ๊ณ
์ ๊ทธ๋ฅ ๋ค ๋ ๋ ค๋ฒ๋ฆฌ๊ณ ๋์ transform.position += CnInputManager.GetAxis("Horizontal") * Time.deltaTime * 10 * Vector3.right;
์ด๋ ๊ฒ ๋ฃ์ด๋ผ ๊ทธ๋ด์ ํ์ธํด ๋ด๋ผ ์ง๊ธ ์ฌ์์ ๋ณด๋ฉด ์นด๋ฉ๋ผ๊ฐ ์ผ์ชฝ์ ์์ ๊ทธ๋์ ์นด๋ฉ๋ผ ์์น๋ ๊ณ์ฐํด์ ๋ฐฉํฅ์ ์ ํด์ฃผ๋๋ฐ
//Clamping ์๋ซ๋ถ๋ถ ๋ถํฐ ๋งจ ๋ฐ๊น์ง ๊ทธ๋ฅ ๋ค์ง์?
์ค์ค ๋ง์ ์ง๊ธ ์นด๋ฉ๋ผ ๋งจ ์ผ์ชฝ์์ ์์ด.. ์ฐ์ ๊ทธ๋ ๊ฒ ํด๋ณผ๊ฒ..
๊ทธ๋ฅ ๋ฌด์ํ๊ณ ์ฌํํ๊ฒ ๋ฒํผ ์ ๋ ฅ๊ฐ๋๋ก๋ง ์์ง์ด๊ฒ ํ์ ์นด๋ฉ๋ผ๊ฐ ์ผ์ชฝ์ ์์ผ๋ ์ผ์ชฝ์ ๋๋ฅด๋ฉด ๊ณต์ด ์์ผ๋ก ๋ค๊ฐ์ฌ๊ฑฐ์ ๊ทธ๋๋ ์ขํ๋ฅผ ๋ณด๋ฉด x์ถ์ด ๋ง์ด๋์ค ๋ฐฉํฅ์ผ๋ก ์์ง์ด๊ณ ์์๊ฑฐ์ ์นด๋ฉ๋ผ๋ฅผ ์ ๋๋ก ์ค์นํ๋ฉด ๋ ์ ๋๋ก ์์ง์ผ๊ฑฐ๊ณ
์ ๊ทธ ์์ ์คํฌ๋ฆฝํธ๋ ํ์์๋ค ๊ทธ๋ฅ ๋ด๊ฐ ์๋ ค์ค ๊ฑฐ ์ ๊ฑฐ๋ง ์์ผ๋ฉด ๋๋ค ๊ทธ๋ผ ์๋ง ์ ์์ง์ผ๊ฑฐ์
๊ทผ๋ฐ ์ ๋ ๊ฒ ํ๋ฉด ์คํผ๋๊ฐ ์๋ ๋ก๊ทธ ์คํฑ์ ๋ ๋ฒ ์ ํ์ง ๊ฐ์ ๋ฐ๋ผ ๋ณํ๊ฒ ๋๋๊น 0๋ณด๋ค ํฌ๋ ์๋๋ก ํ๋ณํด์ ์ผ์ชฝ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ง์ด๊ฒ ํ๋ฉด ์๋๊ฐ ๋ค์ฅ๋ ์ฅ ์ํ ๊ฑฐ์
์ค์ท ๊ฐ์ฌ๊ฐ์ฌ ์๋๋ค ! ํ๋ฒ ๋์ค์ ์๊ฐ๋ ๋ ์ด๊ฑฐ ์ฝ๋ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค.. ๋ชจ๋ฅด๋ ๋ช ๋ น ๋ช๊ฐ ๋ณด์ด๋๋ฐ ์ ๋ํฐ ๋ฌธ์์ฐพ์๋ณด๋ฉด์ ํ๋ฒ ๋ถ์ํด๋ด์ผ์ง .. ๊ฐ์ฌ
๊ทธ๋ ๋๋ ์ด์ ์ข ์ฌ๋ฌ ๊ฐ์ผ๊ฒ ์ ๊ทธ๋ผ ์๊ณ
๊ทธ ๋ญ์ง. ์ด์ ๋ง์ง๋ง ๋ฌธ์ ์ธ๋ฐ.. ์ด์ํ๊ฒ ๋ชจ๋ฐ์ผ๋ก ํ ์คํธํด๋ณด๋ ํฐ์น๊ฐ ์ธ์์ด์๋จ.. ๊ทธ ๋ฌด์จ ๋ฒ์ ์ค์ ๊ฐ์๊ฑฐ ํด์ฃผ๋๊ฒ์๋?
ํ๋๋ง ๋ ~ ์ด์ ์ง์ง ๋ง์ง๋ง์ !!!
์ด๊ฑด ugui๋ก ๋ง๋ค์๋๋ฐ ๋ ngui๋ง ์จ์ ugui์ ๋ํด์ ์ ํ ๋ชจ๋ฅธ๋ค pc์์ ์๋๋๋ฐ ๋ชจ๋ฐ์ผ์์ ์๋๋ค๋ ๊ฑด... ๊ทผ๋ฐ ํ์ดํ ๋ฒํผ์ ๋์ด?
ใ ใ ๋ฒํผ์ ๋์ค๋๋ฐ.. ์ธ์์ด.. ์๊ฒ ์ ๋ญ ์ฌ๋๋ก ์์ง์ด๊ฒ ํด์ค๊ฒ๋ง๋ ๊ฐ์ฌ ์ด๊ฑด ๋ญ ๋ด๊ฐ ์์งํด๋ณผ๊ฒ..
๊ทผ๋ฐ ๋ญ ๊ทธ๊ฑฐ์ผ ๋ฒํผ ๊ทธ๋ฆผ๋ง ๊ด๊ณ์๊ณ ์๋์๋๋ ๊ฑด ๊ทธ๊ฑฐ๋ ์๊ด์๋? ใ กใ ก;
๊ฐ์ฌ๊ฐ์ฌ ~ ์๊ณ ์๊ณ ~ ์ฆ๊ธ~
ํน์ ๋ฒํผ ํด๋ฆญํด๋ณด๋ฉด ๋ฌด์จ ๊ฝ์ด๋ผํด์ผ๋๋? ๋์ถฉ ๊ฝ๋ชจ์์ด๋ผ ํ๋ฉด์๋ ค๋ ์ด๊ฑฐ ๋ญ์ง.. ๊ฝ๋ชจ์๊ฐ์๊ฑฐ ๋์ค๋๋ฐ
ํ๋ฉด ์ค์ผ์ผ๋๋ฌธ์ ๋ญ๊ฐ ๊ฑด๋๋ ธ์์ setresolution ์ธ์ uiscaler๋ผ๊ณ ํ๋?
ใดใด ๊ทธ๊ฑฐ ์๋ฌด๊ฒ๋ ์์ง ์ํ์.. ํ๊ฑฐ๋ผ๊ณ ๋ SetResolution ์ง์ด๊ฒ๋ฟ.
๊ทธ๋ผ ํ์ด์ด๋ผํค ์ฐฝ์์ canvas scaler๋ผ๋๊ฒ ์์์ ์ฌ๊ธฐ ๋ณด๋ UIScaleMode ๊ฐ constantPixelSize ์ scale with screen size, constant physical size ์ด ์ธ๊ฐ์ง๊ฐ ์๋๋ฐ ์ด๊ฑฐ ํ๋์ฉ ๋ฐ๊ฟ๋ณด๋ฉฐ ํ ์คํธ ํด๋ด๋ผ
์๋ SetREsolution ์ป๋ค๊ฐ ์ง์ ์ด..
ใ ใ ใ ใ ํด๋ณผ๊ฒ
์๋๋ฉด ์๋ฆฌ ๊ทผ๋ฐ ๊ทธ๊ฑฐ ์๋๊ฑฐ ๊ฐ์ ๊ทผ๋ฐ ์ ๊ธฐ๋ณธ ์์ ๊ฐ ๋์๋ฆฌ์์๋ง ์๋ชป ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค ์์ ์ ๋ํฐ ์ผค ๋ ์๋ก ๋น ํ๋ก์ ํธ๋ฅผ ๋ง๋ ๋ค์ ์คํ ์ด์์ ์ ์กฐ์ด์คํฑ ์์ ๋ง ๋ฐ์ ๋ค์ ํธ๋ํฐ์ ๋ฃ์ด๋ ํฐ์น ์ค๋ฅ๊ฐ ์์?
์ฐ์ ๋ค๋ฅธ ํฐ์๋ ํด๋ณด๊ณ ๋ด๊ฐ ์์งํด์ ํด๋ณผ๊ฒ.. ์ด์ ๋๊น์ง๋ง ํด์ค๋ ๊ฐ์ฌํจ ใ ใ ๋ถ๊ธ ํน์ฌ์ด~ ๊ฐ์ฌ๊ฐ์ฌ
์๋๋ฉด ๊ธ ๋จ๊ฒจ๋ผ ๋ด ์ฌ๋์ด ๋ต๊ธ ๋ฌ์์ฃผ๊ฒ ์ง๋ง ๋๋ ํจ ์์๋ณผ๊ฒ ์๊ณ