[Godot] Character Move 캐릭터 이동
Godot 2023. 9. 20. 19:03 |반응형
캐릭터 이동 방법을 몇 가지 알아보자.
CharacterBody2D 노드를 생성하고 Sprite2D, CollisionShape2D 노드를 자식노드로 추가한다.
● CharacterBody2D - control.cs 스크립트 추가
● Sprite2D - Texture 지정
● CollisionShape2D - Shape 속성 설정
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
|
using Godot;
public partial class control : CharacterBody2D
{
private int speed = 200;
public override void _PhysicsProcess(double delta)
{
LookAt(GetGlobalMousePosition());
if(Input.IsKeyPressed(Key.Up))
{
Velocity = new Vector2(speed, 0).Rotated(Rotation);
//Position += Velocity * (float)delta;
//
// When moving a CharacterBody2D, you should not set its
// position property directly. Instead, you use the
// move_and_collide() or move_and_slide() methods.These
// methods move the body along a given vector and detect
// collisions.
MoveAndSlide();
}
if(Input.IsKeyPressed(Key.Down))
{
Velocity = new Vector2(-speed, 0).Rotated(Rotation);
//Position += Velocity * (float)delta;
MoveAndSlide();
}
}
}
|
위와 같이 스크립트를 작성한다.
이번엔 마우스를 클릭한 지점으로 움직이는 캐릭터를 만들어 보자.
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
|
using Godot;
public partial class control : CharacterBody2D
{
private int speed = 200;
private Vector2 target = new Vector2();
public override void _PhysicsProcess(double delta)
{
LookAt(GetGlobalMousePosition());
if(Input.IsMouseButtonPressed(MouseButton.Left))
{
target = GetGlobalMousePosition();
}
Velocity = Position.DirectionTo(target) * speed;
//Position += Velocity * (float)delta;
//
// When moving a CharacterBody2D, you should not set its
// position property directly. Instead, you use the
// move_and_collide() or move_and_slide() methods.These
// methods move the body along a given vector and detect
// collisions.
if(Position.DistanceTo(target) > 2)
MoveAndSlide();
}
}
|
control.cs 스크립트를 위와 같이 작성한다.
※ 참고
반응형
'Godot' 카테고리의 다른 글
[Godot] Character Move with Tween 캐릭터 이동(트윈) (0) | 2023.09.21 |
---|---|
[Godot] Character Double Jump 캐릭터 이중 점프 (0) | 2023.09.20 |
[Godot] Keyboard, Mouse Input Handling 키보드 마우스 입력 (0) | 2023.09.20 |
[Godot] QueueFree() 노드 삭제 (0) | 2023.09.20 |
[Godot] Asynchronously Wait 비동기 대기 (0) | 2023.09.19 |