Godot Version
v4.2.2.stable.official [15073afe3]
Question
So basically, if the raycast distance is close enough and it hits a object with the variable isobject = true, when you press e, it should move to your hand position(a node 3d). however, it doesn’t work but the game opens just fine. only warnings.
Pick-up system
extends Node3D
@onready var raycast = $"../Head/Camera3D/RayCast3D"
@onready var detectobject = raycast.detectobject
@onready var colliderparent = raycast.colliderparent
var handposition = Vector3(0.137, 0.099, -0.34)
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta):
if Input.is_action_just_pressed("e") and detectobject == true:
colliderparent.position = Vector3(0.137, 0.099, -0.34)
Raycast
extends RayCast3D
var colliderparent
var detectobject
@export var detectdistance = 1.0
@onready var label = $"../../../../Ui/Label"
@onready var hand = $"../../../Hand"
# Called when the node enters the scene tree for the first time.
func _ready():
label.text = str("")
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta):
if is_colliding():
var origin = global_transform.origin
var collisionpoint = get_collision_point()
var collisiondistance = origin.distance_to(collisionpoint)
var collider = get_collider()
var colliderparent = collider.get_parent()
if colliderparent.has_method("get"):
var isobject = colliderparent.get("isobject")
var objectname = colliderparent.get("objectname")
if isobject == true and collisiondistance < detectdistance:
var detectobject = true
label.text = str(objectname)
else:
var detectobject = false
label.text = str("")