]> Untitled Git - baabarian.git/blobdiff - player/player.gd
* Added falling animation
[baabarian.git] / player / player.gd
index d538d8b327ee48b90241f103e99637af56ea2e74..7b988f5d92280e77a675279834626b4f64226d97 100644 (file)
@@ -10,14 +10,12 @@ class_name Player
 
 @export var air_speed := 3.0
 @export var acceleration := 20.0
 
 @export var air_speed := 3.0
 @export var acceleration := 20.0
-@export var jump_speed := 6.0
 @export var rotation_speed := 10.0
 @export var rotation_speed := 10.0
-@export var fall_speed := 1.2
 @export var idle_timeout := 5.0
 @export var hard_landing_limit := 10.0
 
 @export_group("Physics")
 @export var idle_timeout := 5.0
 @export var hard_landing_limit := 10.0
 
 @export_group("Physics")
-@export var push_force := 1.5
+@export var push_force := 10
 
 @export_group("Camera")
 @export_range(1.0, 10.0) var camera_distance := 2.5
 
 @export_group("Camera")
 @export_range(1.0, 10.0) var camera_distance := 2.5
@@ -108,7 +106,8 @@ func _process_player_on_floor(delta: float):
        var move_direction := _get_player_move_direction()
        
        # if we're not stuck, then it's okay to set the velocity
        var move_direction := _get_player_move_direction()
        
        # if we're not stuck, then it's okay to set the velocity
-       velocity = velocity.move_toward(move_direction * _player_speed, acceleration * delta)
+       var floor_normal := move_direction.angle_to(get_floor_normal() * Vector3(1, 0, 1)) + 1
+       velocity = velocity.move_toward(move_direction * (_player_speed + 1 / floor_normal * 20), acceleration * delta)
        var movement_speed := Vector3(velocity.x, 0, velocity.z).length()
        
        # also, if we're moving, we're not idle
        var movement_speed := Vector3(velocity.x, 0, velocity.z).length()
        
        # also, if we're moving, we're not idle
@@ -127,19 +126,25 @@ func _process_player_on_floor(delta: float):
                skin_target_angle,
                rotation_speed * delta
                )
                skin_target_angle,
                rotation_speed * delta
                )
-       _skin.set_movement_speed(movement_speed)
+       _skin.set_grounded_speed(movement_speed)
        
        # timescale tweaking for fun effect!
        if movement_speed >= charge_speed * 0.75:
                _skin.set_timescale(2.0)
        
        # timescale tweaking for fun effect!
        if movement_speed >= charge_speed * 0.75:
                _skin.set_timescale(2.0)
+               
+               # ignore objects when I'm going fast!
+               set_collision_mask_value(3, false)
        else:
                _skin.set_timescale(1.0)
        else:
                _skin.set_timescale(1.0)
+               set_collision_mask_value(3, true)
 
 
 func _process_player(delta: float) -> void:
        if is_on_floor():
 
 
 func _process_player(delta: float) -> void:
        if is_on_floor():
+               _skin.set_grounded()
                _process_player_on_floor(delta)
        else:
                _process_player_on_floor(delta)
        else:
+               _skin.set_falling()
                velocity += get_gravity() * air_speed * delta
 
        # now actually move!
                velocity += get_gravity() * air_speed * delta
 
        # now actually move!