Unity에서 유닛(Player)가 움직이려면 입력을 잘 넣어줘야한다.
기초적으로는 다음과 같이 넣을 수 있다.
if(Input.GetKey(KeyCode.UpArrow) == true){
playerRigidbody.AddForce(0f, 0f, speed);
}
if(Input.GetKey(KeyCode.DownArrow) == true){
playerRigidbody.AddForce(0f, 0f, -speed);
}
if(Input.GetKey(KeyCode.RightArrow) == true){
playerRigidbody.AddForce(speed, 0f, 0f);
}
if(Input.GetKey(KeyCode.LeftArrow) == true){
playerRigidbody.AddForce(-speed, 0f, 0f);
}
말그대로 script에 UpArrow, DownArrow.. 이런식으로 키를 하나하나 배정해준다.
Input .GetKey 안에 있는 키코드를 통하여 true의경우는 입력이 됐을때이다.
Rigidbody 에 해당하는 속력같은것들은 다음과 같이 정의했다.
private Rigidbody playerRigidbody;
public float speed = 8f;
해당 정의한 내용을 토대로 하이어라키에 적용해보자.
하이어라키에 Player를 넣고,
Rigidbody를 추가하자.
추가방법은
다음과같이 Add Component 부분을 클릭하여 Rigidbody 를 검색하면된다.
스크립트 적용한 프로젝트 파일에서 스크립트를 Player부분으로 드래그 해보자.
해당 플레이어에 스크립트가 적용된다.
물론 스크립트 내용중에 다음과같이 작성하면 빠르게 진행된다.
void Start()
{
playerRigidbody = GetComponent<Rigidbody>();
}
(어떤 리지드바디를 적용할것인지 Component를 가져오는 방법임.)
그러면 이제 이동을 할 수 있게 된다.
물론 이런 방법도 있지만, 추가적인 방법이있다.
우선 우리는 평면적으로 움직임을 구현하려고 하는 프로젝트이기 때문에,
float xInput = Input.GetAxis("Horizontal");
float zInput = Input.GetAxis("Vertical");
float xSpeed = xInput * speed;
float zSpeed = zInput * speed;
Vector3 newVelocity = new Vector3(xSpeed, 0f, zSpeed);
playerRigidbody.velocity = newVelocity;
해당 구문을 Update부분에 넣어보자.
GetAxis의 경우엔 미리 프로젝트에 설정된 경로에 지정되어있다.
Unity - Edit - Project Settings - Input Manager를 보면 Horizontal, Vertical .. 이런것들을 어떤 키로 이용할지 정의되어있다.
(기초 세팅값은 화살표키와 보조키 WASD 로 이동한다)