C# 파일을 하나 만들자.
공포의 코딩 시간이 돌아왔다!
using UnityEngine; using System.Collections;
public class CHARMOVE : MonoBehaviour {
Animator anim; //애니메이터 컴포넌트를 받아오기 위해 선언한다
public float spd = 0.5f; // 캐릭터의 이동속도 이다.
public float rotnspd = 15f; // 캐릭터의 회전속도 이다.
Rigidbody rigi; //리지드바디 컴포넌트를 받아오기 위해 선언한다
float h; float v; Vector3 moves; //이동값과 관련된 변수
void Start () {
rigi = GetComponent<Rigidbody> (); anim = GetComponent<Animator> ();
//각각의 컴포넌트를 받아온다
}
void Update () {
rot (); ani ();
h = Input.GetAxisRaw ("Horizontal"); v = Input.GetAxisRaw ("Vertical"); //유니티에서는 wasd , 4방향키에 대한 수치값을 기본으로 지원해주는데 그수를 받는다.
Move (h, v); //move 함수에 h와v값을 넘겨준다.
}
void Move(float h, float v){
moves.Set (h, 0, v); //위의 입력된수를 받아 벡터값을 변경한다.
moves = (moves.normalized * spd * Time.deltaTime); rigi.MovePosition (transform.position + moves); //부드럽게 이동을 시켜준다. }
void rot(){ if (h == 0 && v == 0) return; // 방향키가 눌리지않을경우 리전 , 자동회전을 방지한다.
Quaternion rotn = Quaternion.LookRotation (moves); rigi.rotation = Quaternion.Slerp (rigi.rotation, rotn, rotnspd * Time.deltaTime); // 쿼터니어는 회전값과 관련된 함수이다 , 첫줄은 백터값에따른 방향을 바라보게 해주고 // 두번째줄은 그 방향으로 부드럽게 이동되게 하는 코드이다. (Slerp)
}
void ani(){ if (h == 0 && v == 0) {
anim.SetBool ("mirun", false); // 애니메이터 컨트롤러는 이름.Set0000()이러한 형식으로 값을 바꾸어준다. } else { anim.SetBool ("mirun", true); }
}
} |
코딩이 끝났다면 ,
우리의 모델에 드래그해 집어 넣는다.
그리고 다음 두 컴포넌트를 추가해 준다.
마지막으로 콜라이더 박스의 에디트 콜라이더 버튼을 이용해서
박스를 모델에 맞춰 이쁘게 맞춰준다 !
그리고 실행을 하면..!
드디어 캐릭터가 움직이기 시작한다 !
출처: <http://blog.naver.com/lib/smarteditor2/920092e/smart_editor2_inputarea.html>
WRITTEN BY
- 미냐브
게임,유머,게임제작 4보단 3