반응형
유니티 키보드로 캐릭터를 움직이기 위해서는
1. 우선 캐릭터를 씬뷰에 배치 시킨다.
2. 캐릭터에 Rigidbody2D 물리엔진과 충돌검사를 체크하는 Box Collider 2D를 추가한다.
3. 다음 방향키에 따라 움직이는 스크립트를 적용한다.
스크립트 의 주요내용으로는
Start() 함수에서는 Rigidbody2D에 중력의 영향을 받지 않도록 하기.
충돌시 회전하지 않도록 고정하기. 를 입력한다. 충돌시 회전하기 않기는 이 예제에서는 필수 코드는 아니다.
using UnityEngine;
public class onkeyPressMove : MonoBehaviour
{
float x = 0;
float y = 0;
float speed = 2;
bool flip = false;
Rigidbody2D rd2D;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
//중력의 영향을 받지 않도록 세팅함
rd2D = GetComponent<Rigidbody2D>();
rd2D.gravityScale = 0; // 중력을 0으로 세팅하기
//충돌시 Z축으로 회전하지 않도록 고정하기
rd2D.constraints = RigidbodyConstraints2D.FreezeRotation;
}
// Update is called once per frame
void Update()
{
//초기화를 해주지 않으면 키를 누르지 않아도 계속해서 움직인다.
x = 0;
y = 0;
//4방향 키 입력시, 좌표점 세팅하기 ,
if (Input.GetKey("right")){
x = speed;
flip = false;
}
else if (Input.GetKey("left"))
{
x = -speed;
flip = true;
}
else if (Input.GetKey("up"))
{
y = speed;
}
else if (Input.GetKey("down"))
{
y = -speed;
}
}
//1초당 50번 반복함
private void FixedUpdate()
{
//중력의 영향을 받으면서 움직이기 위해서 linearVelocity 를 사용한다.
rd2D.linearVelocity = new Vector2(x, y);
//좌우키 입력시 이미지 반전.
this.GetComponent<SpriteRenderer>().flipX = flip;
}
}
Update()에서는
Input.GetKey() 가 핵심이다. 인자로 키보드 값을 입력받고 그에 따른 x,y 축 이동 범위를 세팅해준다.
키보드 입력 속도가 빠르기 때문에 Update()함수에서 체크를 해야한다.
FixedUpdate()는 초당 50번만 호출되는 고정값이므로, 키보드 입력값을 때때로 놓칠수 있다.
그래서 이 함수에서는 실제 이동하는 코드 와 좌우 반전 코드만 넣어준다.
Rigidbody 의 linearVelocity 에 Vector2(x,y) 값을 입력하여 좌우 상하 벡터 속도에 따라 캐릭터를 움직이는 것이 핵심이다.
좌우 반전은 SpriteRenderer 컴포넌트의 flipX 값을 true, false 로 상황에 맞게 세팅한다.
반응형
'앱 만들기 > 유니티2D 게임 만드는 방법' 카테고리의 다른 글
유니티 유도탄 및 따라가는 스크립트 만드는 방법 (0) | 2024.11.03 |
---|---|
유니티 캐릭터 가로로 움직이는 방법(물리엔진 속도 적용) (1) | 2024.11.02 |
유니티 키보드로 캐릭터 움직이는 방법(2) - 이미지 좌우 뒤집기 (0) | 2024.11.01 |
유니티 키보드로 캐릭터 움직이는 방법(4방향) (1) | 2024.10.31 |
유니티 트레이스 출력 방법 (0) | 2024.10.30 |
댓글