①. Input.GetAxisRaw로 값을 받아와 그 값이 -1인지 1인지 판단하는 방법.
※ GetAxisRaw(Horisontal/Vertical )
Horizontal과 Vertical은 유니티에서 Edit -> Project Setting -> Input Manager -> Axes에 가보면 확인할 수 있다.
axisName에 의해 식별된 가상축의 값을 반환한다.
키보드와 조이스틱 입력값에 대해 -1에서 1까지의 값을 가진다.
public class Move : MonoBehaviour
{
public int moveSpeed;
// 매 프레임마다 1회씩 실행되는 함수.
void Update()
{
float x = Input.GetAxisRaw("Horizontal"); // 좌, 우측 키보드 입력 (좌 : -1, X : 0, 우 : +1)
float y = Input.GetAxisRaw("Vertical"); // 상, 하측 키보드 입력 (하 : -1, X : 0, 상 : +1)
// ←
if (x > 0)
{
transform.Translate(Vector3.right * moveSpeed * Time.deltaTime);
// ㄴ좌표이동 오른쪽으로 * 1만큼 이동
}
// →
if (x < 0)
{
transform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
// ㄴ좌표이동 왼쪽으로 * 1만큼 이동
}
// ↓
if (y > 0)
{
transform.Translate(Vector3.up * moveSpeed * Time.deltaTime);
// ㄴ좌표이동 위쪽으로 * 1만큼 이동
}
// ↑
if (y < 0)
{
transform.Translate(Vector3.down * moveSpeed * Time.deltaTime);
// ㄴ좌표이동 아래쪽으로 * 1만큼 이동
}
}
②. GetAxis로 받아온 값을 Translate의 연산에 넣어주는 방법
public class Movem : MonoBehaviour
{
public float moveSpeed;
void Update()
{
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");
// deltaTime = 프레임 사이의 간격 시간. 10프레임이라 치면 1초동안 10개의 프레임이 있다.
// 0.1프레임과 0.2프레임 사이의 시간을 반환.
transform.Translate(Vector3.right * x * moveSpeed * Time.deltaTime);
transform.Translate(Vector3.up * y * moveSpeed * Time.deltaTime);
}
}
오른쪽 화살표 키 입력시, Translate 연산에 1을 곱해주기 떄문에 양수(x축 기준 오른쪽)
왼쪽 화살표 키 입력시, Translate 연산에 -1을 곱해주기 때문에 음수(x축 기준 왼쪽) 방향으로 움직이게 된다.
위쪽 화살표 키 입력시 양수, 아래쪽 화살표 키 입력시 음수.
'Unity > Unity2D' 카테고리의 다른 글
| Unity2D_Week2 : Property (0) | 2021.12.09 |
|---|---|
| Unity2D_Week1 : Coroutine (0) | 2021.12.06 |
| Unity2D_Week1 : Raycast (0) | 2021.12.06 |
| Unity2D_Week1 : ChargeJump (0) | 2021.12.06 |
| Unity2D_Week1 : Jump (0) | 2021.12.06 |