tail wag works
This commit is contained in:
@@ -18,8 +18,8 @@ var _kick_timer: float = 0.0
|
||||
var _was_on_floor: bool = false
|
||||
var _pre_slide_vel_y: float = 0.0
|
||||
|
||||
enum _DustState { NONE, WALK, CHARGE }
|
||||
var _dust_state: _DustState = _DustState.NONE
|
||||
enum DustState { NONE, WALK, CHARGE }
|
||||
var _dust_state: DustState = DustState.NONE
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -82,7 +82,7 @@ func _setup_hoof_dust() -> void:
|
||||
_hoof_emitters.append(p)
|
||||
|
||||
|
||||
func _set_dust_state(new_state: _DustState) -> void:
|
||||
func _set_dust_state(new_state: DustState) -> void:
|
||||
if new_state == _dust_state:
|
||||
return
|
||||
_dust_state = new_state
|
||||
@@ -92,15 +92,15 @@ func _set_dust_state(new_state: _DustState) -> void:
|
||||
p.spread = DP.f("dust_spread")
|
||||
p.gravity = Vector3(0.0, DP.f("dust_gravity_y"), 0.0)
|
||||
match new_state:
|
||||
_DustState.NONE:
|
||||
DustState.NONE:
|
||||
p.emitting = false
|
||||
_DustState.WALK:
|
||||
DustState.WALK:
|
||||
p.scale_amount_min = DP.f("walk_scale_min")
|
||||
p.scale_amount_max = DP.f("walk_scale_max")
|
||||
p.initial_velocity_min = DP.f("walk_vel_min")
|
||||
p.initial_velocity_max = DP.f("walk_vel_max")
|
||||
p.emitting = true
|
||||
_DustState.CHARGE:
|
||||
DustState.CHARGE:
|
||||
p.scale_amount_min = DP.f("charge_scale_min")
|
||||
p.scale_amount_max = DP.f("charge_scale_max")
|
||||
p.initial_velocity_min = DP.f("charge_vel_min")
|
||||
@@ -109,10 +109,10 @@ func _set_dust_state(new_state: _DustState) -> void:
|
||||
|
||||
|
||||
func _on_dp_changed(_key: String, _val: Variant) -> void:
|
||||
if _hoof_emitters.is_empty() or _dust_state == _DustState.NONE:
|
||||
if _hoof_emitters.is_empty() or _dust_state == DustState.NONE:
|
||||
return
|
||||
var prev := _dust_state
|
||||
_dust_state = _DustState.NONE
|
||||
_dust_state = DustState.NONE
|
||||
_set_dust_state(prev)
|
||||
|
||||
|
||||
@@ -181,12 +181,14 @@ func _physics_process(delta: float) -> void:
|
||||
# Left click → thrust NE (forward-right diagonal)
|
||||
# Right click → thrust NW (forward-left diagonal)
|
||||
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
|
||||
if Input.is_action_just_pressed(&"thrust_left"):
|
||||
var ne := (flat_forward + flat_right).normalized()
|
||||
_apply_thrust(ne if ne.length() > 0.1 else flat_forward)
|
||||
if Input.is_action_just_pressed(&"thrust_right"):
|
||||
var nw := (flat_forward - flat_right).normalized()
|
||||
_apply_thrust(nw if nw.length() > 0.1 else flat_forward)
|
||||
if Input.is_action_just_pressed(&"thrust_left") or Input.is_action_just_pressed(&"thrust_right"):
|
||||
var raw := cube_guy.global_transform.basis.z
|
||||
var bull_fwd := Vector3(raw.x, 0.0, raw.z).normalized()
|
||||
var bull_right := bull_fwd.cross(Vector3.UP)
|
||||
if Input.is_action_just_pressed(&"thrust_left"):
|
||||
_apply_thrust((bull_fwd + bull_right).normalized())
|
||||
else:
|
||||
_apply_thrust((bull_fwd - bull_right).normalized())
|
||||
|
||||
# Reset kick timer on landing so the first kick after a bounce is immediate
|
||||
if on_floor and not _was_on_floor and direction:
|
||||
@@ -222,8 +224,8 @@ func _physics_process(delta: float) -> void:
|
||||
|
||||
# ── Dust ──────────────────────────────────────────────────────────────────
|
||||
if flat_speed > DP.f("dust_charge_spd") and on_floor:
|
||||
_set_dust_state(_DustState.CHARGE)
|
||||
_set_dust_state(DustState.CHARGE)
|
||||
elif flat_speed > DP.f("dust_walk_spd") and on_floor:
|
||||
_set_dust_state(_DustState.WALK)
|
||||
_set_dust_state(DustState.WALK)
|
||||
else:
|
||||
_set_dust_state(_DustState.NONE)
|
||||
_set_dust_state(DustState.NONE)
|
||||
|
||||
Reference in New Issue
Block a user