When charging with both buttons, see red
This commit is contained in:
@@ -7,7 +7,6 @@ const HOOF_OFFSETS: Array = [
|
||||
Vector3(-0.30, -0.25, 0.60),
|
||||
Vector3( 0.30, -0.25, 0.60),
|
||||
]
|
||||
const SNOUT_OFFSET: Vector3 = Vector3(0.0, 0.5, -1.0)
|
||||
|
||||
@onready var camera_pivot: Node3D = $Camera3D
|
||||
@onready var cube_guy: Node3D = $bull_v10
|
||||
@@ -24,7 +23,7 @@ var _thrust_left_charge: float = 0.0
|
||||
var _thrust_right_charge: float = 0.0
|
||||
var _charge_was_full: bool = false
|
||||
|
||||
var _snort_emitter: CPUParticles3D = null
|
||||
var _charge_overlay: ColorRect = null
|
||||
var _charge_ready_emitter: CPUParticles3D = null
|
||||
|
||||
enum DustState { NONE, WALK, CHARGE }
|
||||
@@ -106,28 +105,14 @@ func _setup_charge_indicators() -> void:
|
||||
sphere.rings = 2
|
||||
sphere.material = mat
|
||||
|
||||
# Snort steam from nose during charge-ahead (both buttons held)
|
||||
var snort_ramp := Gradient.new()
|
||||
snort_ramp.set_color(0, Color(0.95, 0.95, 0.95, 0.9))
|
||||
snort_ramp.set_color(1, Color(0.80, 0.80, 0.80, 0.0))
|
||||
|
||||
_snort_emitter = CPUParticles3D.new()
|
||||
_snort_emitter.position = SNOUT_OFFSET
|
||||
_snort_emitter.emitting = false
|
||||
_snort_emitter.amount = 6
|
||||
_snort_emitter.lifetime = 0.35
|
||||
_snort_emitter.explosiveness = 0.0
|
||||
_snort_emitter.randomness = 0.5
|
||||
_snort_emitter.local_coords = true
|
||||
_snort_emitter.direction = Vector3(0.0, 0.2, -1.0).normalized()
|
||||
_snort_emitter.spread = 25.0
|
||||
_snort_emitter.initial_velocity_min = 2.0
|
||||
_snort_emitter.initial_velocity_max = 4.0
|
||||
_snort_emitter.scale_amount_min = 0.3
|
||||
_snort_emitter.scale_amount_max = 0.7
|
||||
_snort_emitter.mesh = sphere
|
||||
_snort_emitter.color_ramp = snort_ramp
|
||||
cube_guy.add_child(_snort_emitter)
|
||||
# Screen overlay — red tint while charge-ahead (both buttons) is active
|
||||
var ui := CanvasLayer.new()
|
||||
add_child(ui)
|
||||
_charge_overlay = ColorRect.new()
|
||||
_charge_overlay.color = Color(0.7, 0.05, 0.0, 0.0)
|
||||
_charge_overlay.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
_charge_overlay.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
ui.add_child(_charge_overlay)
|
||||
|
||||
# Orange spark burst when single-button charge hits max
|
||||
var burst_ramp := Gradient.new()
|
||||
@@ -305,9 +290,10 @@ func _physics_process(delta: float) -> void:
|
||||
_charge_ready_emitter.restart()
|
||||
_charge_was_full = either_full
|
||||
|
||||
# Snort while charge-ahead is active
|
||||
if _snort_emitter.emitting != both_held:
|
||||
_snort_emitter.emitting = both_held
|
||||
# Fade red overlay in while charge-ahead, out when released
|
||||
var target_alpha := 0.30 if both_held else 0.0
|
||||
var oc := _charge_overlay.color
|
||||
_charge_overlay.color = Color(oc.r, oc.g, oc.b, lerpf(oc.a, target_alpha, delta * 10.0))
|
||||
|
||||
_both_held = both_held
|
||||
|
||||
|
||||
Reference in New Issue
Block a user