DungeonCrawler/enemy.tscn
Andre 394b3a89b8 Souls/RPG-Hybrid Bewegungssystem, Kamera, Animationen & Dokumentation
Bewegung:
- Souls-Modus (kein Ziel): Charakter dreht sich zur Laufrichtung relativ zu
  camera_pivot.world_yaw; bei RMB gehalten → Strafe statt Drehung
- Walk-Toggle (NumLock): RPG-Strafe-Modus mit langsamerer Geschwindigkeit
- Lock-On (Ziel markiert): Spieler dreht sich smooth zum Gegner, WASD = Strafe
- Ausweichrolle (Shift): rollt in Eingaberichtung (world_yaw-relativ im Souls-Modus)
- Sofort-180°-Snap statt animierter Drehung bei >150° Winkelunterschied

Kamera (camera_pivot.gd):
- world_yaw: absolute Weltausrichtung, unabhängig von Spielerrotation (kein Feedback-Loop)
- LMB gehalten: Kamera orbitet, Spieler dreht sich nicht
- RMB gehalten: Spieler + Kamera drehen sich gemeinsam
- Soft Lock-On: camera_pivot dreht Spieler smooth zum Ziel

Animationen:
- Neue FBX-Animationen: Quick Roll, Running Jump, Walking Jump,
  Running Strafe L/R, Running Turn 180
- Animationen im Souls-Modus: immer "run" vorwärts; S = walk_back
- Root-Motion-Strip: XZ-Bewegung auf Knochen-Tracks wird genullt

Welt:
- Boden-Shader: Schachbrettmuster in World-Space (INV_VIEW_MATRIX)
- ProceduralSkyMaterial + WorldEnvironment per Code
- Alte assets/animations und assets/models durch Warrior+Animation ersetzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 22:26:10 +01:00

26 lines
769 B
Text

[gd_scene format=3 uid="uid://cvojaeanxugfj"]
[ext_resource type="Script" path="res://enemy.gd" id="1_enemy"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_1"]
radius = 0.4
height = 1.8
[node name="Enemy" type="CharacterBody3D"]
script = ExtResource("1_enemy")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0)
shape = SubResource("CapsuleShape3D_1")
[node name="NavigationAgent3D" type="NavigationAgent3D" parent="."]
[node name="HealthDisplay" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2, 0)
[node name="Label3D" type="Label3D" parent="HealthDisplay"]
pixel_size = 0.01
billboard = 3
text = "50 / 50"
font_size = 64
outline_size = 8