extends State class_name PlayerFall var initgrav = 0 func get_state_name(): return str(self).split(":")[0] func enter(): initgrav = player.grav player.grav = player.fallgrav func exit(): player.grav = initgrav player.fallroll_timer = 0.0 player.fallroll_input_timer = 0.0 player.land_delay_timer = 0.0 player.can_fallroll = true player.fallrolling = false player.jump_buffered = false func update(delta): player.ap.play("fall") player.coyote_timer += delta fallrollcheck(delta) player.jumpbuffer(delta) if player.transitionledgegrab(): Transitioned.emit(self, "PlayerLedgeGrab") if player.fallroll_timer <= player.fallroll_time or player.land_delay_timer >= player.land_delay_time: if player.transitioncoyotejump() or player.transitionjump(): Transitioned.emit(self, "PlayerJump") elif player.transitiondoublejump(): Transitioned.emit(self, "PlayerDoubleJump") elif player.is_on_floor() and player.fallroll_timer >= player.fallroll_time and player.fallrolling: print("fallroll") Transitioned.emit(self, "PlayerFallRoll") #ersetzen durch state: PlayerFallRoll elif player.transitionidle(): Transitioned.emit(self, "PlayerIdle") elif player.transitionrun(): Transitioned.emit(self, "PlayerRun") #elif player.transitiondash(): #Transitioned.emit(self, "PlayerDash") func physics_update(delta): pass func fallrollcheck(delta): player.fallroll_timer += delta if Input.is_action_just_pressed("sprint") and player.can_fallroll: player.fallrolling = true player.can_fallroll = false if player.fallrolling == true: player.fallroll_input_timer += delta if player.fallroll_input_timer >= player.fallroll_input_time: player.fallrolling = false if player.is_on_floor(): player.land_delay_timer += delta