feat: add rigged+animated Miku player model with auto-rig pipeline

- Add miku_rigged_animated.glb (3.27MB) with 18-bone skeleton and 6 animations
  (Idle, Walk, Run, Jump, Crouch, Death) via Blender auto-rig script
- Add tools/rig_and_animate.py: reusable Blender script for rigging any humanoid
  mesh with Mixamo-compatible bone naming
- Update SkinnedPlayerModel: scale_factor, first-person mode, animation state
  matching (Idle/Walk/Run/Jump/Crouch/Death)
- Update level_runtime.gd: use skinned model for local player, procedural
  humanoid for remote players
- Update skin_manager.gd and test_level_builder.gd to use animated model
- Fix Godot 4.2.1 'is not Type' syntax in 5 weapon files
- Add editor/import_miku_to_tscn.gd for editor-based GLB import
This commit is contained in:
2026-06-23 00:19:52 -04:00
parent f7cd3571fd
commit 0672bebe7b
13 changed files with 546 additions and 52 deletions
+3 -2
View File
@@ -120,7 +120,7 @@ func _apply_impulse() -> void:
# Apply impulse to player velocity
var final_force = push_dir * impulse_strength
if multiplayer.has_multiplayer_peer() and multiplayer.multiplayer_peer is not OfflineMultiplayerPeer:
if multiplayer.has_multiplayer_peer() and not(multiplayer.multiplayer_peer is OfflineMultiplayerPeer):
player.server_apply_impulse.rpc_id(1, final_force)
else:
player.apply_impulse(final_force)
@@ -177,7 +177,8 @@ func _shoot_hitscan() -> void:
if result.collider.has_method("take_damage"):
result.collider.take_damage(damage, result.position, player)
elif result.collider is StaticBody3D or result.collider is CSGShape3D:
ImpactSpawner.spawn(get_tree(), "bullet", result.position, result.normal, 0.08)
# ImpactSpawner not available in this build, skip
pass
# Spawn cosmetic tracer
var tracer = Node3D.new()