void Start()
ย ย {
ย ย ย ย this.playerRigidbody = GetComponent<Rigidbody>();
ย ย ย ย //ํ๋ ์ด์ด ์ ๋๋ฉ์ด์ ๊ด๋ จ
ย ย ย ย animator = GetComponent<Animator> ();
ย ย }
ย ย // Update is called once per frame
ย ย void Update()
ย ย {
ย ย ย ย ////์บ๋ฆญํฐ ๊ธฐ๋ณธ ํ๋(์ด๋, ์ ํ) ์์
ย ย ย ย movement.x = Input.GetAxisRaw("Horizontal");
ย ย ย ย movement.z = Input.GetAxisRaw("Vertical");
ย ย ย ย movement.Normalize();
ย ย ย ย Vector3 velocity = new Vector3(movement.x, movement.z);
ย ย ย ย playerRigidbody.velocity = movement * PlayerMoveSpeed;
ย ย ย ย if (Mathf.Approximately(movement.x, 0) && Mathf.Approximately(movement.z, 0)) // ์ด๋ ์ค์ด๋ผ๋ฉด
ย ย ย ย {
ย ย ย ย ย ย animator.SetBool("isMove", true); // Move Tree ์ ๋๋ฉ์ด์ ์ถ๋ ฅ
ย ย ย ย }
ย ย ย ย else
ย ย ย ย {
ย ย ย ย ย ย animator.SetBool("isMove", false);ย // Move Tree ์ ๋๋ฉ์ด์ ์ ์ง
ย ย ย ย }
ย ย ย ย animator.SetFloat("zDir", movement.z);
ย ย ย ย animator.SetFloat("xDir", movement.x);
ย ย ย ย ////์บ๋ฆญํฐ ๊ธฐ๋ณธ ํ๋(์ด๋, ์ ํ) ๋
ย ย ย ย ย
ย ย ย ย ////์บ๋ฆญํฐ ์ ๋ฉด ๋ง์ฐ์ค ์ปค์ ๋ณด๊ธฐ ์์
ย ย ย ย Ray cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);
ย ย ย ย //๋ง์ฐ์ค ์์น๋ฅผ ์นด๋ฉ๋ผ๋ ์ด๋ฅผ ์ด์ฉํด ์นด๋ฉ๋ผ์์ ์คํฌ๋ฆฐ์ ์ ์ ํตํด ๋ฐํ
ย ย ย ย Plane GroupPlane = new Plane(Vector3.up, Vector3.zero);
ย ย ย ย //์๋์ขํ๋ก ํ๋ ๋ฐฉํฅ์ ํฌ๊ธฐ๊ฐ 1์ธ ๋ฐฑํฐ์ ์์ ์ ๊ฐ์
ย ย ย ย float rayLength;
ย ย ย ย if (GroupPlane.Raycast(cameraRay, out rayLength)) //๋ ์ด๊ฐ ํ๋ฉด๊ณผ ๊ต์ฐจํ๋์ง ํ์
ย ย ย ย {
ย ย ย ย ย ย Vector3 pointTolook = cameraRay.GetPoint(rayLength); //๋ ์ด๋ ์ค๊ฑฐ๋ฆฌ์ ์์น๊ฐ ๋ฐํ
ย ย ย ย ย ย transform.LookAt(new Vector3(pointTolook.x, transform.position.y, pointTolook.z));
ย ย ย ย ย ย //์์์ ๊ตฌํ pointTolook ์์น๊ฐ์ ์บ๋ฆญํฐ๊ฐ ๋ณด๊ฒํจ
ย ย ย ย ย ย Vector3 dir = pointTolook - transform.position; //๋ฑกํฅ ๊ตฌํ๊ธฐ, ๋ฐฉํฅ ๋ฒกํฐ๊ฐ = ๋ชฉํ๋ฒกํฐ - ์์๋ฒกํฐ
ย ย ย ย ย ย dir.y = 0f;
ย ย ย ย ย ย Quaternion rot = Quaternion.LookRotation(dir.normalized); //๋ฐฉํฅ์ ์ฟผํฐ๋์ธ ๊ฐ ๊ตฌํ๊ธฐ, ์ฟผ๋ํฐ์ธ ๊ฐ = ์ฟผ๋ํฐ์ธ ๋ฐฉํฅ ๊ฐ(๋ฐฉํฅ ๋ฒกํฐ)
ย ย ย ย ย ย transform.rotation = rot; //๋ฐฉํฅ ๋๋ฆฌ๊ธฐย
ย ย ย ย }
ย ย ย ย ////์บ๋ฆญํฐ ์ ๋ฉด ๋ง์ฐ์ค ์ปค์ ๋ณด๊ธฐ ๋
ย ย }
์ด์ ์ฌ๋ฌ๋ถ๋ค์ ๋์์ผ๋ก ๋ช๊ฐ์ง ํด๊ฒฐํ๋๋ฐ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ ์์ ์ค์ ์ค์ ์ด์ฌํ ํ๋๋ฐ ๋ต์ด ์๋์์ ๋์์ ๊ตฌํจ
ํ์ฌ ์ฟผํฐ๋ทฐ ์์ ์ผ๋ก 3D์บ๋ฆญํฐ๋ฅผ ์ด๋ํ๊ณ ๋ธ๋ ๋๋ก ์ ๋๋ฉ์ด์ ๊น์ง ๊ตฌํํจ
๋ฌธ์ ๋ ์บ๋ฆญํฐ ์ ๋ฉด์ ๋ง์ฐ์ค ์ปค์ ์์น๋ฅผ ๋ฐ๋ผ๊ฐ๊ฒ ๋จ, ์ฌ๊ธฐ์ WASD๋ก ์ด๋ํ๋ฉด ๋ง์ฐ์ค ์ปค์๋ฅผ ๊ธฐ์ค์ด ์๋๋ผย
๋ธ๋ ๋ x, z ๊ธฐ์ค์ผ๋ก ์ข(ํ์ง), ์ฐ(์ ์ง), ์(์ผ์ชฝ), ํ(์ค๋ฅธ์ชฝ)์ด๋ ๊ฒ ์ด๋ํด๋ฒ๋ฆฌ๋๋ฐ ์ด ๊ธฐ์ค์ ๋ง์ฐ์ค ์ปค์ ์์น๋ก ์ก๊ณ ์ถ์ย
๋์๋ฐ๋ ์ค๋ฐ
์ฟผํฐ๋ทฐ์ธ๋ฐ wasd ํค์ ์ด๋๋ฒกํฐ๊ฐ ๋ฌ๋ผ์ง์ผ์ด ์๋? ์นด๋ฉ๋ผ ํ์ ์ด ๋ค์ด๊ฐ๋๊ฑด๊ฐ? ์ํผ wasd๋ฅผ ์นด๋ฉ๋ผ ์ขํ๊ณ ๊ธฐ์ค์ผ๋ก ๋์ผ๋ฉด ๋
์นด๋ฉ๋ผ ๊ณ ์ ์ธ๋;;
transform forward
์กฐ๊ธ๋ง๋ ์์ธํ๊ฒ ์๋ ค์ฃผ๋ฉด ์๋ ๊น์ผ
w ๋๋ฅด๋ฉด ๋ง์ฐ์ค ๋ฐฉํฅ์ผ๋ก ์์ง์ด๊ณ ์ถ์๊ฑด๊ฐ์? ๋ง์ฐ์ค ๋ฐฉํฅ์ผ๋ก ์ ํ์ข์ฐ?
์๋จ ์ ๋๋ฉ์ด์ ๋ฐฉํฅ๋ง ๋ฐ๋๋ฉด ๋ผ์. ์บ๋ฆญํฐ๊ฐ ๋ง์ฐ์ค๋ฅผ ๋ฐ๋ผ๋ณด๋๋ฐ WASD๋ก ์์ง์ด๋ฉด ๊ณ ์ ๋ ์ ๋๋ฉ์ด์ ์ด ๋์์์ ์๋ฅผ ๋ค๋ฉด ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ์ ๋๊ณ D๋ฅผ ๋๋ฅด๋ฉด ์ง์ง ์ ๋๋ฉ์ด์ ์ด ์๋์ค๊ณ ๋ค๋ก๊ฐ๋ ๋ชจ์ ์ด ๋์ค๋ ๊ฑฐ์ฃ