반응형
지난 시간과 유사하게 키보드로 오브젝트를 움직여봅니다.
하지만 가장 다른 점은 바로, 물리엔진의 속도를 이용한 이동입니다.
즉, 좌표점을 이동하기 보다는 속도값을 직접 제어하여 보다 스무스한 현실세계(?)의 감을 더 가미했다고 볼 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
// 키를 누르면 스프라이트가 이동한다
public class OnKeyPress_MoveSprite : MonoBehaviour
{
public float speed = 2; // 속도:Inspector에 지정
float vx = 0;
float vy = 0;
bool leftFlag = false;
Rigidbody2D rbody;
private void Start()
{
//오브젝트의 리디지바디 컴포넌트를 불어옵니다. rbody = GetComponent<Rigidbody2D>();
}
void Update()
{ // 계속 시행한다
vx = 0;
vy = 0;
if (Input.GetKey("right"))// 만약 오른쪽 키가 눌리면
{
vx = speed; // 오른쪽으로 나아가는 이동량을 넣는다
leftFlag = false;
}
if (Input.GetKey("left"))// 만약 왼쪽 키가 눌리면
{
vx = -speed; // 왼쪽으로 나아가는 이동량을 넣는다
leftFlag = true;
}
if (Input.GetKey("up"))// 만약 위 키가 눌리면
{
vy = speed; // 위로 나아가는 이동량을 넣는다
}
if (Input.GetKey("down"))// 만약 아래 키가 눌리면
{
vy = -speed; // 아래로 나아가는 이동량을 넣는다
}
}
void FixedUpdate()// 계속 시행한다(일정 시간마다)
{
// 좌표값으로 이동한다
// this.transform.Translate(vx / 50, vy / 50, 0);
// 리디지 바디 중력값을 이용한다.
rbody.velocity = new Vector2(vx, vy);
// 왼쪽 오른쪽 방향을 바꾼다
this.GetComponent<SpriteRenderer>().flipX = leftFlag;
}
}
|
cs |
FixedUpdate() 함수안에서
rbody.velocity 속도 값에 키보드로 입력된 속도를 Vector 로 표현해주는 것이 가장 주요한 포인트 입니다.
이렇게 구현된 동작은 하기 영상처럼 움직이기 됩니다.
반응형
'앱 만들기 > 유니티2D 게임 만드는 방법' 카테고리의 다른 글
유니티-충돌 처리 하기(1) 방향 전환 (1) | 2021.06.15 |
---|---|
유니티-유도탄 구현해보기. (2) | 2021.06.13 |
유니티-비주얼스튜디오 연동하기 IntelliCode 사용하기 (2) | 2021.06.01 |
유니티- 키보드로 오브젝트 움직이기. 상하좌우 (2) | 2021.05.31 |
유니티-오브젝트 반전 하기. (1) | 2021.05.30 |
댓글