small racing game im working on
Diffstat (limited to 'classes/ghost.gd')
| -rw-r--r-- | classes/ghost.gd | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/classes/ghost.gd b/classes/ghost.gd index eb376f1..674436e 100644 --- a/classes/ghost.gd +++ b/classes/ghost.gd @@ -9,7 +9,7 @@ const trail_scene = preload("res://scenes/trail.tscn") const inactive = {active = false}; var skids: Array[Array] = [[inactive], [inactive], [inactive], [inactive]] var particles: Array[GPUParticles3D] = [] -var v: Dictionary # [CarVars] +var v: PackedFloat32Array # [CarVars] var current_gear := 0 var engine_rpm := 800.0 @@ -26,6 +26,7 @@ func clear_skids() -> void: wheel.clear() skids = [[inactive], [inactive], [inactive], [inactive]] +@warning_ignore("shadowed_variable") func reset(clear_skids := true) -> void: engine_rpm = 800 current_gear = 0 @@ -34,33 +35,35 @@ func reset(clear_skids := true) -> void: if clear_skids: clear_skids() -func update(car_vars: Dictionary, delta: float) -> void: +func update(car_vars: PackedFloat32Array, delta: float) -> void: v = car_vars - engine_rpm = maxf(800, v.engine_rpm) - current_gear = v.current_gear - wheels[2].rotation.y = v.steering * .75 - wheels[3].rotation.y = v.steering * .75 - global_rotation = v.rotation + engine_rpm = maxf(800, v[CarVars.ENGINE_RPM]) + current_gear = int(v[CarVars.CURRENT_GEAR]) + + wheels[2].rotation.y = v[CarVars.STEERING] * .75 + wheels[3].rotation.y = v[CarVars.STEERING] * .75 + + global_rotation = CarVars.arr2vec(v, CarVars.ROTATION) if delta > 0: - global_position = lerp(global_position, v.position, 10 * delta) + global_position = lerp(global_position, CarVars.arr2vec(v, CarVars.POSITION), 10 * delta) else: - global_position = v.position + global_position = CarVars.arr2vec(v, CarVars.POSITION) for i in 4: - particles[i].emitting = v.wheel_skidinfo[i] < (.2 if i > 2 else .99) and v.wheel_contact[i] and v.kph > 30 + particles[i].emitting = v[CarVars.SKID_START + i] < (.2 if i > 2 else .99) and v[CarVars.CONTACT_START + i] > 0 and v[CarVars.KPH] > 30 if particles[i].emitting: @warning_ignore("narrowing_conversion") - particles[i].amount = clampf(ceil(75 * (1 - v.wheel_skidinfo[i])) * 1 if i > 2 else 8, 0, 75) + particles[i].amount = clampf(ceil(75 * (1 - v[CarVars.SKID_START + i])) * 1 if i > 2 else 8, 0, 75) if !skids[i][-1].active: skids[i].append(trail_scene.instantiate() as Trail3D) get_parent().add_child(skids[i][-1]) - (skids[i][-1] as Trail3D).add(to_global(v.wheel_position[i]) - Vector3(0, .661, 0)) + (skids[i][-1] as Trail3D).add(to_global(CarVars.arr2vec(v, CarVars.WHEEL_POSITION_START + (i * 3))) - Vector3(0, .661, 0)) elif skids[i][-1].active: skids[i][-1].active = false - wheels[i].position = v.wheel_position[i] + wheels[i].position = CarVars.arr2vec(v, CarVars.WHEEL_POSITION_START + (i * 3)) - body_mesh.rotation.z = lerp(body_mesh.rotation.z, clampf(((-v.steering * .001) * v.wheel_rpm) + randf_range(-0.05,0.05), -.4, .4), 5 * delta) + body_mesh.rotation.z = lerp(body_mesh.rotation.z, clampf(((-v[CarVars.STEERING] * .001) * v[CarVars.WHEEL_RPM]) + randf_range(-0.05,0.05), -.4, .4), 5 * delta) func kph() -> float: - return v.kph + return v[CarVars.KPH] |