Discover free, accurate, and easy-to-use online tools like Age Calculator, Password Generator, Unit Converter, and more! Boost your productivity with instant web-based utilities – no downloads, no hassle. Fast, secure, and mobile-friendly tools for everyday tasks. Try now!
هل تريد تأثير قفز رائع في لعبتك؟ جرب هذه الطريقة - game dev
Admin
Last update :
صفحة محسنة
فيديو توضيحي
السكربت
extends CharacterBody2D
@export var speed = 300.0
@export var acceleration = 1500.0
@export var friction = 1200.0
@export var jump_velocity = -400.0
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
@onready var visual_node = $Sprite2D
var initial_scale: Vector2
var was_in_air = false
func _ready():
initial_scale = visual_node.scale
func _physics_process(delta):
if not is_on_floor():
velocity.y += gravity * delta
if is_on_floor() and was_in_air:
animate_land()
was_in_air = not is_on_floor()
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = jump_velocity
animate_jump()
var input_axis = Input.get_axis("ui_left", "ui_right")
if input_axis != 0:
velocity.x = move_toward(velocity.x, input_axis * speed, acceleration * delta)
else:
velocity.x = move_toward(velocity.x, 0, friction * delta)
move_and_slide()
func animate_jump():
var tween = create_tween()
var stretch_scale = initial_scale * Vector2(0.8, 1.2)
tween.tween_property(visual_node, "scale", stretch_scale, 0.1).set_trans(Tween.TRANS_SINE)
tween.tween_property(visual_node, "scale", initial_scale, 0.25).set_trans(Tween.TRANS_BOUNCE)
func animate_land():
var tween = create_tween()
var squash_scale = initial_scale * Vector2(1.2, 0.8)
tween.tween_property(visual_node, "scale", squash_scale, 0.1).set_trans(Tween.TRANS_SINE)
tween.tween_property(visual_node, "scale", initial_scale, 0.2).set_trans(Tween.TRANS_BOUNCE)