Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends CharacterBody2D
- @export var walk_speed = 125.0
- @export var run_speed = 175.0
- @export var jump_force = 150.0 # Upward jump force
- @export var gravity = 300.0
- @export var character_y_translate = 0
- @onready var anim_tree = $AnimationTree
- @onready var animation_playback = anim_tree.get("parameters/playback")
- @onready var shadow_sprite = $ShadowSprite
- @onready var character_sprite = $CharacterSprite
- var player_direction: Vector2 = Vector2.ZERO
- var is_pressing_shift: bool = false
- var is_pressing_left_or_right = false
- var jump_velocity = 0.0
- var jump_position = 0.0
- var is_jumping = false
- func _ready():
- anim_tree.active = true
- animation_playback.travel("Idle")
- func _physics_process(delta):
- player_direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
- is_pressing_shift = Input.is_action_pressed("ui_shift")
- is_pressing_left_or_right = player_direction.x
- if player_direction:
- var speed = run_speed if is_pressing_shift else walk_speed
- velocity = player_direction * speed
- else:
- velocity = Vector2.ZERO
- if is_jumping:
- jump_position += jump_velocity * delta
- jump_velocity -= gravity * delta # Simulated gravity pulling the character down
- velocity.y -= jump_velocity
- if jump_position <= 0.0:
- jump_position = 0.0 # Snap back to the ground
- is_jumping = false # Stop jumping
- jump_velocity = 0.0
- else:
- # Handle jump input
- if Input.is_action_just_pressed("ui_jump"):
- is_jumping = true
- jump_velocity = jump_force
- move_and_slide()
- func _process(delta):
- update_animations()
- func update_animations():
- if(velocity == Vector2.ZERO):
- animation_playback.travel("Idle")
- else:
- if (is_pressing_shift):
- animation_playback.travel("Run")
- else:
- animation_playback.travel("Walk")
- if is_pressing_left_or_right:
- anim_tree.set("parameters/Idle/blend_position", player_direction)
- anim_tree.set("parameters/Walk/blend_position", player_direction)
- anim_tree.set("parameters/Run/blend_position", player_direction)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement