diff --git a/entity/npc/NPC.gd b/entity/npc/NPC.gd index 5403daf..02e2ab7 100644 --- a/entity/npc/NPC.gd +++ b/entity/npc/NPC.gd @@ -1,6 +1,38 @@ +@tool class_name NPC extends CharacterBody3D -@export var interactEvent:EventResource +@export var _movement:NPCMovement -func _onInteract(playerEntity: Player) -> void: +@export var facingDirection:EntityMovement.FacingDirection: + set(value): + if _movement: + _movement.facingDir = value + get: + if _movement: + return _movement.facingDir + return EntityMovement.FacingDirection.SOUTH + +@export var walkSpeed:float = 48.0: + set(value): + if _movement: + _movement.walkSpeed = value + get: + if _movement: + return _movement.walkSpeed + return 48.0 + +@export var runSpeed:float = 64.0: + set(value): + if _movement: + _movement.runSpeed = value + get: + if _movement: + return _movement.runSpeed + return 64.0 + +func onInteract(player:Player) -> void: + print("Interacted with NPC") + pass + +func _enter_tree() -> void: pass diff --git a/entity/npc/NPC.tscn b/entity/npc/NPC.tscn index 472f8e9..34ad6f5 100644 --- a/entity/npc/NPC.tscn +++ b/entity/npc/NPC.tscn @@ -62,8 +62,9 @@ animations = [{ [sub_resource type="SphereShape3D" id="SphereShape3D_x8luf"] radius = 8.5 -[node name="NPC" type="CharacterBody3D"] +[node name="NPC" type="CharacterBody3D" node_paths=PackedStringArray("_movement")] script = ExtResource("1_00k55") +_movement = NodePath("Scripts/NPCMovement") [node name="Scripts" type="Node" parent="."] @@ -86,10 +87,10 @@ axis = 1 double_sided = false texture_filter = 0 sprite_frames = SubResource("SpriteFrames_1seh5") -animation = &"walk_west" +animation = &"walk_south" [node name="CollisionShape3D" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8.5, 0) shape = SubResource("SphereShape3D_x8luf") -[connection signal="interactEvent" from="InteractableArea" to="." method="_onInteract"] +[connection signal="interactEvent" from="InteractableArea" to="." method="onInteract"] diff --git a/entity/player/PlayerCamera.gd b/entity/player/PlayerCamera.gd index 1a2f83b..cfed4df 100644 --- a/entity/player/PlayerCamera.gd +++ b/entity/player/PlayerCamera.gd @@ -1,3 +1,4 @@ +@tool class_name PlayerCamera extends Node const CAMERA_PIXELS_PER_UNIT = 1.0 @@ -8,6 +9,9 @@ const CAMERA_PIXEL_SCALE = 1.0 @export var offset:Vector3 = Vector3(0, 0, 12) func _process(delta: float) -> void: + if !camera || !target: + return + # I tried a few things but this is most consistent for both backbuffer and # framebuffer viewports. var viewportHeight = get_viewport().get_visible_rect().size.y; diff --git a/map/TestMap.tscn b/map/TestMap.tscn index 4872138..31fc3a5 100644 --- a/map/TestMap.tscn +++ b/map/TestMap.tscn @@ -9,7 +9,7 @@ [node name="TestMapBase" parent="." instance=ExtResource("1_ox0si")] [node name="Player" parent="." instance=ExtResource("2_0d2qr")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.3947, 1.94879, -13.1025) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27.142, 1.94879, -59.112) facingDirection = 1 [node name="NPC" parent="." instance=ExtResource("3_0vfw4")]