DungeonCrawler/camera_pivot.gd
Andre 5addad0b8c Initial commit: DungeonCrawler Grundgerüst
- Third-Person Spieler mit WASD-Bewegung und Kamerasteuerung (RMB + Mausrad-Zoom)
- HP-System mit Healthbar und Aktionsleiste (Slots 1-9)
- Autoattack-System: Linksklick markiert Ziel, Rechtsklick markiert + greift an
- Waffensystem-Basis: Schaden basiert auf ausgerüsteter Waffe (unbewaffnet = 1)
- Gegner-KI: läuft auf Spieler zu, greift bei Reichweite an, zeigt HP-Label bei Markierung
- Ressourcen-Klassen: Attack und Weapon

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 15:35:13 +01:00

32 lines
1.2 KiB
GDScript

# CameraPivot.gd
# Steuert die Third-Person-Kamera: Maussteuerung (RMB), Zoom per Mausrad
extends Node3D
@export var sensitivity = 0.3 # Mausempfindlichkeit
@export var min_pitch = -40.0 # Maximale Neigung nach unten
@export var max_pitch = 20.0 # Maximale Neigung nach oben
@export var min_zoom = 5.0 # Minimale Kameraentfernung
@export var max_zoom = 20.0 # Maximale Kameraentfernung
@export var zoom_speed = 1.0 # Zoom-Geschwindigkeit pro Mausrad-Schritt
var pitch = 0.0
@onready var camera = $Camera3D
func _ready():
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
func _input(event):
# RMB gehalten: Kamera drehen
if event is InputEventMouseMotion and Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT):
get_parent().rotate_y(deg_to_rad(-event.relative.x * sensitivity))
pitch -= event.relative.y * sensitivity
pitch = clamp(pitch, min_pitch, max_pitch)
rotation_degrees.x = pitch
# Mausrad: Zoom
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
camera.position.z = clamp(camera.position.z + zoom_speed, min_zoom, max_zoom)
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
camera.position.z = clamp(camera.position.z - zoom_speed, min_zoom, max_zoom)