Browse Source

Speed up heroes over time, resetting with switch

Hero 0 speeds up especially quickly!
master
Luna 7 years ago
parent
commit
86b9250dec
2 changed files with 22 additions and 9 deletions
  1. +4
    -1
      scripts/heroes/0.gd
  2. +18
    -8
      scripts/player.gd

+ 4
- 1
scripts/heroes/0.gd View File

@ -10,7 +10,10 @@ var wallride_forgiveness = .150
func _ready(): func _ready():
._ready() ._ready()
walk_speed *= 1.5
walk_speed *= 1
air_accel *= 1.5
walk_speed_build *= 2
air_speed_build *= 3
func control_player(state): func control_player(state):
.control_player(state) .control_player(state)


+ 18
- 8
scripts/player.gd View File

@ -7,14 +7,18 @@ var yaw = 0
var pitch = 0 var pitch = 0
# Walking speed and jumping height are defined later. # Walking speed and jumping height are defined later.
var walk_speed = 1
var jump_speed = 3
const air_accel = .6
var floor_friction = 0.92
var air_friction = 0.98
var walk_speed = 0.8 # Actually acceleration; m/s/s
var jump_speed = 3 # m/s
var air_accel = .3 # m/s/s
var floor_friction = 1-0.08
var air_friction = 1-0.03
var player_info # Set by lobby var player_info # Set by lobby
var walk_speed_build = 0.006 # `walk_speed` per `switch_charge`
var air_speed_build = 0.006 # `air_accel` per `switch_chare`
var switch_charge = 0 var switch_charge = 0
var switch_charge_cap = 200 # While switching is always at 100, things like speed boost might go higher!
var movement_charge = 0.15 # In percent per meter (except when heroes change that) var movement_charge = 0.15 # In percent per meter (except when heroes change that)
var debug_node var debug_node
@ -127,7 +131,8 @@ func control_player(state):
var floor_velocity = Vector3() var floor_velocity = Vector3()
var object = ray.get_collider() var object = ray.get_collider()
state.apply_impulse(Vector3(), direction * walk_speed * get_mass())
var accel = (1 + switch_charge * walk_speed_build) * walk_speed
state.apply_impulse(Vector3(), direction * accel * get_mass())
var lin_v = state.get_linear_velocity() var lin_v = state.get_linear_velocity()
lin_v.x *= floor_friction lin_v.x *= floor_friction
lin_v.z *= floor_friction lin_v.z *= floor_friction
@ -137,7 +142,8 @@ func control_player(state):
state.apply_impulse(Vector3(), normal * jump_speed * get_mass()) state.apply_impulse(Vector3(), normal * jump_speed * get_mass())
else: else:
state.apply_impulse(Vector3(), direction * air_accel * get_mass())
var accel = (1 + switch_charge * air_speed_build) * air_accel
state.apply_impulse(Vector3(), direction * accel * get_mass())
var lin_v = state.get_linear_velocity() var lin_v = state.get_linear_velocity()
lin_v.x *= air_friction lin_v.x *= air_friction
lin_v.z *= air_friction lin_v.z *= air_friction
@ -152,7 +158,11 @@ func _process(delta):
var switch_node = get_node("MasterOnly/SwitchCharge") var switch_node = get_node("MasterOnly/SwitchCharge")
switch_node.set_text("%.f%%" % switch_charge) switch_node.set_text("%.f%%" % switch_charge)
if switch_charge >= 100: if switch_charge >= 100:
switch_node.set_text("100%\nQ - Switch hero")
# Let switch_charge keep building, because we use it for walk_speed and things
switch_node.set_text("100%% (%.f)\nQ - Switch hero" % switch_charge)
if switch_charge > switch_charge_cap:
# There is however a cap
switch_charge = switch_charge_cap
func switch_hero_interface(): func switch_hero_interface():
# Interface needs the mouse! # Interface needs the mouse!


Loading…
Cancel
Save