¾î¼Â½ºÅä¾î¿¡¼ "Unity-chan!" Model¸¦ ´Ù¿î·Îµå ¹Þ¾Æ¼ ÀÓÆ÷Æ® ÇÑ´Ù. ¾î¼Â½ºÅä¾î¿¡¼ °Ë»ö Å°¿öµå´Â Unity-chan!ÀÌ´Ù. unityChan¿¡ Rigidbody¸¦ Ãß°¡ÇÏ¿© ij¸¯Å͸¦ Á¦¾îÇغ¸ÀÚ. 1. ÇÁ·ÎÁ§Æ®ºä >> Create >> Animator Controller¸¦ ¸¸µç´Ù. À̸§Àº "UnityChanAction"À¸·Î ÇÑ´Ù. 2. "UnityChanAction"À» ¼±ÅÃÈÄ Animatorºä¸¦ ¶ç¿î´Ù. ¸Þ´º >> Window >> Animator¸¦ ½ÇÇàÇÑ´Ù. 3. Idle, Run, Jump »óŸ¦ ¸¸µç´Ù. 4. ¾Ö´Ï¸ÞÀÌ¼Ç »óÅ¿¡ ¾Ö´Ï¸ÞÀÌ¼Ç Å¬¸³À» Ãß°¡ÇÑ´Ù.
5. ¾Ö´Ï¸ÞÀÌ¼Ç ÆĶó¸ÞÅÍ Jumping, RunningÀ» bool ŸÀÔÀ¸·Î Ãß°¡ÇÑ´Ù. 6. Idle <--> Run Æ®·£Áö¼ÇÀ» ¸¸µç´Ù. 7. Idle --> Run Æ®·£Áö¼ÇÀ» ¼³Á¤ÇÑ´Ù. "Has Exit Time" üũ¸¦ ÇØÁ¦ ÇÑ´Ù. Running »óŸ¦ true·Î ÁöÁ¤ÇÑ´Ù. 8. Run --> Idle Æ®·£Áö¼ÇÀ» ¼³Á¤ÇÑ´Ù. "Has Exit Time" üũ¸¦ ÇØÁ¦ ÇÑ´Ù. Running »óŸ¦ false·Î ÁöÁ¤ÇÑ´Ù. 9. Run <--> Jump Æ®·£Áö¼ÇÀ» ¸¸µç´Ù. 10. Run --> Jump Æ®·£Áö¼ÇÀ» ¼³Á¤ÇÑ´Ù. "Has Exit Time" üũ¸¦ ÇØÁ¦ ÇÑ´Ù. Jumping »óŸ¦ true·Î ÁöÁ¤ÇÑ´Ù. 11. Jump --> Run Æ®·£Áö¼ÇÀ» ¼³Á¤ÇÑ´Ù. "Has Exit Time" üũ¸¦ ÇØÁ¦ ÇÑ´Ù. Jumping »óŸ¦ false·Î ÁöÁ¤ÇÑ´Ù. 12.. Idle <--> Jump Æ®·£Áö¼ÇÀ» ¸¸µç´Ù. 13. Idle --> Jump "Has Exit Time" üũ¸¦ ÇØÁ¦ ÇÑ´Ù. Jumping »óŸ¦ true·Î ÁöÁ¤ÇÑ´Ù. 13. Jump --> Idle "Has Exit Time" üũ¸¦ ÇØÁ¦ ÇÑ´Ù. Jumping »óŸ¦ false·Î ÁöÁ¤ÇÑ´Ù. 14. Project View >> UnityChan >> Models >> unitychan.fbxÀ» Hierarchy View·Î µå·¡±× 15. UnityChanActionÀ» unitychanÀÇ Animator-Controller¿¡ µå·¡±× ÇÑ´Ù. Tip) "Main Camera"¸¦ ¾Àºä Ä«¸Þ¶ó °ªÀ¸·Î ¼³Á¤Çϱ⠾Àºä·Î Ä«¸Þ¶ó¸¦ Á¶Á¤ ÈÄ¿¡ "Main Camera"¸¦ ¼±ÅÃÇÑ´Ù.
¸Þ´º >> GameObject >> "Align With View"¸¦ ¼±ÅÃÇÑ´Ù. 16. UnityChan¿¡ Rigidbody¸¦ ÄÄÆ÷³ÍÆ®·Î Ãß°¡ÇÑ´Ù. x, z´Â ȸÀü ÇÒ¼ö ¾øµµ·Ï üũÇÑ´Ù. Velocity¿Í AddForce·Î À̵¿Çϱ⠶§¹®¿¡ Rigidbody¸¦ Ãß°¡ÇÑ´Ù. 17. UnityChan¿¡ "Capsule Collider"¸¦ ÄÄÆ÷³ÍÆ®·Î Ãß°¡ÇÑ´Ù. ¼³Á¤À» ¾Æ·¡±×¸²Ã³·³ ¼³Á¤ÇÑ´Ù. 18. Apply Root Motion üũ¸¦ ÇØÁ¦ÇÑ´Ù. 19. ÇÁ·ÎÁ§Æ® ºä¿¡¼ unityChan¿¡ ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ Ãß°¡ÇÑ´Ù. using System.Collections;
using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { Rigidbody rb; public float speed = 2f; public float thrust = 100; private Animator animator; bool ground; void Start() { rb = GetComponent<Rigidbody>(); animator = GetComponent<Animator>(); } void Update() { if (ground) { if (Input.GetKey(KeyCode.RightArrow)) { rb.velocity = new Vector3(speed, 0, 0); transform.rotation = Quaternion.Euler(0, 90, 0); animator.SetBool("Running", true); } else if (Input.GetKey(KeyCode.LeftArrow)) { rb.velocity = new Vector3(-speed, 0, 0); transform.rotation = Quaternion.Euler(0, 270, 0); animator.SetBool("Running", true); } else if (Input.GetKey(KeyCode.UpArrow)) { rb.velocity = new Vector3(0, 0, speed); transform.rotation = Quaternion.Euler(0, 0, 0); animator.SetBool("Running", true); } else if (Input.GetKey(KeyCode.DownArrow)) { rb.velocity = new Vector3(0, 0, -speed); transform.rotation = Quaternion.Euler(0, 180, 0); animator.SetBool("Running", true); } else { animator.SetBool("Running", false); } if (Input.GetKey(KeyCode.Space)) { animator.SetBool("Jumping", true); rb.AddForce(new Vector3(0, thrust, 0)); ground = false; } else { animator.SetBool("Jumping", false); } } } void OnCollisionStay(Collision col) { ground = true; } } Âü°í) http://unity-shoshinsha.biz/archives/189 |