Added interactable

This commit is contained in:
jonathan
2026-01-27 12:31:37 +01:00
parent 68e86405c9
commit 6a5494a3de
11 changed files with 86 additions and 7 deletions
+7
View File
@@ -0,0 +1,7 @@
extends Node
class_name Interactable
signal on_hit
func hit()->void:
on_hit.emit()
+1
View File
@@ -0,0 +1 @@
uid://d1pa8ssvmxbn
+6
View File
@@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://be7u1kn41g2ww"]
[ext_resource type="Script" uid="uid://d1pa8ssvmxbn" path="res://addons/interaction/interactable.gd" id="1_8h68r"]
[node name="Interactable" type="Area3D"]
script = ExtResource("1_8h68r")
+17
View File
@@ -0,0 +1,17 @@
extends Node3D
@onready var ray_cast: RayCast3D = $RayCast3D
const Interactable = preload("uid://d1pa8ssvmxbn")
@export var max_distance: float = 100
func _ready() -> void:
ray_cast.target_position = Vector3(0,0,-max_distance)
func _input(event: InputEvent) -> void:
if event.is_action_pressed("interact"):
if ray_cast.is_colliding():
var collider = ray_cast.get_collider()
if collider.get_script() == Interactable:
var interactable: Interactable = collider
interactable.hit()
@@ -0,0 +1 @@
uid://cqf6w5rp1hjcs
+10
View File
@@ -0,0 +1,10 @@
[gd_scene load_steps=2 format=3 uid="uid://dlryddjharg35"]
[ext_resource type="Script" uid="uid://cqf6w5rp1hjcs" path="res://addons/interaction/interaction_ray.gd" id="1_jlrgf"]
[node name="InteractionRay" type="Node3D"]
script = ExtResource("1_jlrgf")
[node name="RayCast3D" type="RayCast3D" parent="."]
target_position = Vector3(0, 0, -1)
collide_with_areas = true