[๐ฃ์ง๋ฌธ]
๊ณ ๋ ์ง๋ฌธ
์ต๋ช
(183.98)
2023-11-17 14:32
์ถ์ฒ 0
extends CharacterBody2D
@
export var speed
: float = 200.0
@
export var jump_velocity
: float = -200.0
@
export var double_jump_velocity
: float = -100
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity
= ProjectSettings
.get_setting("physics/2d/default_gravity")
var has_double_jumped
: bool = false
func
_physics_process(delta
):
ย ย ย ย # Add the gravity.
ย ย ย ย if not is_on_floor():
ย ย ย ย ย ย ย ย velocity
.y
+= gravity
* delta
ย ย ย ย else:
ย ย ย ย ย ย ย ย has_double_jumped
= false
ย ย ย ย # Handle Jump.
ย ย ย ย if Input
.is_action_just_pressed("jump"):
ย ย ย ย ย ย ย ย if is_on_floor():
ย ย ย ย ย ย ย ย ย ย ย ย velocity
.y
= jump_velocity
ย ย ย ย elif
not has_double_jumped
:
ย ย ย ย ย ย ย ย ย ย ย ย velocity
.y
= double_jump_velocity
ย ย ย ย ย ย ย ย ย ย ย ย has_double_jumped
= true
ย ย ย ย # Get the input direction and handle the movement/deceleration.
ย ย ย ย # As good practice, you should replace UI actions with custom gameplay actions.
ย ย ย ย var direction
= Input
.get_axis("ui_left", "ui_right")
ย ย ย ย if direction
:
ย ย ย ย ย ย ย ย velocity
.x
= direction
* speed
ย ย ย ย else:
ย ย ย ย ย ย ย ย velocity
.x
= move_toward(velocity
.x
, 0, speed
)
ย ย ย ย move_and_slide()ํก์คํฌ๋กค ์ ํ๋ธ ์์ ๋ณด๋ฉด์ ๋ฐ๋ผ ํ๊ณ ์๋๋ฐ ๋๋ธ ์ ํ ์ถ๊ฐ ํ๊ธฐ ์ ์ ์ ๋๋ค๊ฐ
๋๋ธ์ ํ ์ถ๊ฐํ๋๊น ๊ฐ์๊ธฐ ๋ฐ๋ฅ์ ์ฐฉ์ง ํ์๋ง์ ๊ณ์ ๋ฐ๋ฅ์์ ํตํต ํ๋ฉด์ ์ข์ฐ๋ก๋ง ์์ง์ฌ์ง๊ณ ์ ํํค๋ ๋จนํต์ธ๋ฐ
์์ด๋ด๊น
์ ํญ ์์ ๋์ ์ฝ๋ ๋๊ฐ์
elif not has_double_jumped:๋ ๊ทธ ๋ฐ๋ก ๋ฐ์ 2์ค์ ๋ค์ฌ์ฐ๊ธฐ ํ๋ฒ ๋ ํด์ผํ ๊ฑฐ๊ฐํ
์์์์์ ใณใณ