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>
26 lines
769 B
Text
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
|