오늘은 키를 입력 받았을 때, 객체를 이동 시키는 방법에 대해서 실습을 해보았다.
using UnityEngine;
using System.Collections;
public class Control : MonoBehaviour
{
// Update is called once per frame
int speed = 10; //스피드
float xMove, yMove;
void Update()
{
xMove = 0;
yMove = 0;
if (Input.GetKey(KeyCode.RightArrow))
xMove = speed * Time.deltaTime;
else if (Input.GetKey(KeyCode.LeftArrow))
xMove = -speed * Time.deltaTime;
else if (Input.GetKey(KeyCode.UpArrow))
yMove = speed * Time.deltaTime;
else if (Input.GetKey(KeyCode.DownArrow))
yMove = -speed * Time.deltaTime;
this.transform.Translate(new Vector3(xMove, yMove, 0));
}
}
Input.getKey(KeyCode.x) : boolean 값을 return 해준다. 여기서 getKey는 키가 눌렸을 때 True 값을 return 해준다.
xMove = speed * Time.deltaTime : 여기서 Time.deltaTime은 지난 프레임이 완료되는데 까지 걸린 시간이며, 단위는 초이다. 그래서 이를 곱해주게 되면 기존에 한 프레임당 speed 만큼 가던 것을 초당 speed 만큼 이동하게 해준다.
this.transform.Translate(new Vector3(xMove,yMove,0)) : transform의 Translate 메소드는 Vector3 타입의 객체를 파라미터로 받는다. 해당 메소드의 기능은 입력받은 Vector3 객체를 매개로하여 현재 객체의 위치를 상대적으로 이동시켜준다.
현재 if문을 else if문을 통해서 4가지 방향에 대해서 정의를 하였는데, 위와 같이 모든 이동 방향을 else if문으로 하게되면 대각선 이동이 불가능 하게 된다. 대각선 이동이 가능하게 하려면, x축 y축 이동에 대해서는 각각의 if문을 사용하면 가능해진다.