feat: add movment based on needs with themed zones

This commit is contained in:
Rijad Zuzo
2026-06-19 08:08:17 +02:00
parent a3ad8d8a07
commit e2549ac50c
4 changed files with 102 additions and 2 deletions
+32
View File
@@ -1,11 +1,43 @@
extends CharacterBody3D
@export var move_speed := 3.0
@export var rotation_speed := 8.0
var sim_id: int = -1
var npc_name: String = ""
var profession: String = ""
var target_position: Vector3
var has_target := false
func setup_from_sim(npc: SimNPC) -> void:
sim_id = npc.id
npc_name = npc.npc_name
profession = npc.profession
name = "NPC_%s_%s" % [sim_id, npc_name]
target_position = global_position
func set_target_position(pos: Vector3) -> void:
target_position = pos
has_target = true
func _physics_process(delta: float) -> void:
if not has_target:
return
var to_target := target_position - global_position
to_target.y = 0
if to_target.length() < 0.25:
velocity = Vector3.ZERO
move_and_slide()
return
var direction := to_target.normalized()
velocity.x = direction.x * move_speed
velocity.z = direction.z * move_speed
velocity.y = 0
move_and_slide()
var target_angle := atan2(direction.x, direction.z)
rotation.y = lerp_angle(rotation.y, target_angle, rotation_speed * delta)
+1 -1
View File
@@ -24,5 +24,5 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0)
mesh = SubResource("CapsuleMesh_d844k")
[node name="FaceMarker" type="MeshInstance3D" parent="."]
transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.35, 0, 1.2, -0.5)
transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.35, 0, 1.2, 0.59052056)
mesh = SubResource("BoxMesh_d844k")