[Godot] Character Double Jump 캐릭터 이중 점프
Godot 2023. 9. 20. 21:00 |반응형
캐릭터의 더블 점프를 구현해 보자.
● CharacterBody2D - control.cs 스크립트를 추가
● Sprite2D - Texture 지정
● CollsionShape2D - 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
using Godot;
public partial class control : CharacterBody2D
{
public const float Speed = 300.0f;
public const float JumpVelocity = -400.0f;
// Get the gravity from the project settings to be synced with RigidBody nodes.
public float gravity = ProjectSettings.GetSetting("physics/2d/default_gravity").AsSingle();
private bool isFirstJump = false;
public override void _PhysicsProcess(double delta)
{
Vector2 velocity = Velocity;
// Add the gravity.
if (!IsOnFloor())
velocity.Y += gravity * (float)delta;
// Handle First Jump.
if (Input.IsActionJustPressed("ui_accept") && IsOnFloor())
{
velocity.Y = JumpVelocity;
isFirstJump = true;
}
// Handle Second Jump.
else if (Input.IsActionJustPressed("ui_accept") && isFirstJump == true)
{
velocity.Y = JumpVelocity;
isFirstJump = false;
}
// Get the input direction and handle the movement/deceleration.
// As good practice, you should replace UI actions with custom gameplay actions.
Vector2 direction = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down");
if (direction != Vector2.Zero)
{
velocity.X = direction.X * Speed;
}
else
{
velocity.X = Mathf.MoveToward(Velocity.X, 0, Speed);
}
Velocity = velocity;
MoveAndSlide();
}
}
|
더블 점프 구현을 위한 control.cs 스크립트는 위와 같이 작성한다.
● StaticBody2D
● Sprite2D - Texture 지정(ground.jpg)
● CollisionShape2D - Shape 속성을 Sprite2D 땅 부분에 맞게 설정
위에서 만든 캐릭터와 그라운드를 Node 노드의 자식노드로 추가한다. (Instantiate Child Scene)
※ 참고
반응형
'Godot' 카테고리의 다른 글
[Godot] One Way Collision 한 쪽 방향으로만 충돌 체크 (0) | 2023.09.21 |
---|---|
[Godot] Character Move with Tween 캐릭터 이동(트윈) (0) | 2023.09.21 |
[Godot] Character Move 캐릭터 이동 (0) | 2023.09.20 |
[Godot] Keyboard, Mouse Input Handling 키보드 마우스 입력 (0) | 2023.09.20 |
[Godot] QueueFree() 노드 삭제 (0) | 2023.09.20 |