X-Git-Url: http://git.purplebirdman.com/baabarian.git/blobdiff_plain/87f90ed1d61c12766366f39de1ee2c0213ffbe1f..526b0a508cd476fa750b479e59045bd253ca2949:/player/player.gd diff --git a/player/player.gd b/player/player.gd index d538d8b..7b988f5 100644 --- a/player/player.gd +++ b/player/player.gd @@ -10,14 +10,12 @@ class_name Player @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 fall_speed := 1.2 @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 @@ -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 - 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 @@ -127,19 +126,25 @@ func _process_player_on_floor(delta: float): 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) + + # ignore objects when I'm going fast! + set_collision_mask_value(3, false) else: _skin.set_timescale(1.0) + set_collision_mask_value(3, true) func _process_player(delta: float) -> void: if is_on_floor(): + _skin.set_grounded() _process_player_on_floor(delta) else: + _skin.set_falling() velocity += get_gravity() * air_speed * delta # now actually move!