hard gravity

This commit is contained in:
OddlyTimbot 2025-10-20 15:31:36 -04:00
parent 47fa82b075
commit b3ca85807f

View File

@ -5,6 +5,7 @@ const SPEED = 300.0
const JUMP_VELOCITY = -400.0 const JUMP_VELOCITY = -400.0
#add a variable for momentum...t.w. #add a variable for momentum...t.w.
@export var acceleration:int = 8 @export var acceleration:int = 8
@export var hard_gravity:float =1.5
var direction:float = 0 var direction:float = 0
@export var BUMP_POWER = 100 @export var BUMP_POWER = 100
enum FaceDirection{LEFT, RIGHT} enum FaceDirection{LEFT, RIGHT}
@ -18,6 +19,10 @@ var pushEnabled:bool = false
@onready var jump_buffer_timer: Timer = $JumpBufferTimer @onready var jump_buffer_timer: Timer = $JumpBufferTimer
#For State Machine.............t.w.
enum State{IDLE, RUNNING, JUMP, FALLING}
var current_state:State = State.IDLE
func _physics_process(delta): func _physics_process(delta):
# Get the input direction and handle the movement/deceleration. # Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions. # As good practice, you should replace UI actions with custom gameplay actions.
@ -71,12 +76,20 @@ func handle_movement(_delta)->void:
else: else:
velocity.x = move_toward(velocity.x, SPEED * direction, acceleration) velocity.x = move_toward(velocity.x, SPEED * direction, acceleration)
if not is_on_floor(): if current_state == State.JUMP:
#apply normal velocity
velocity += get_gravity() * _delta velocity += get_gravity() * _delta
if velocity.y>0:
current_state = State.FALLING
else:
#apply hard gravity, character falling
velocity += get_gravity() * hard_gravity * _delta
#add a buffer timer to the jump velocity............t.w. #add a buffer timer to the jump velocity............t.w.
if is_on_floor() && jump_buffer_timer.time_left >0: if is_on_floor() && jump_buffer_timer.time_left >0:
velocity.y = JUMP_VELOCITY velocity.y = JUMP_VELOCITY
#change state...........t.w.
current_state = State.JUMP
jump_buffer_timer.stop() jump_buffer_timer.stop()
func handle_collisions()->void: func handle_collisions()->void: