Making a 3D Object clickable with a mouse

While the forums are down, I have spawned an instance in a 3D world and would like to execute a function one the instance when I click it with my mouse. How would I do that?

13 points · 5 comments · view on lemmy.world

5 Comments

simple@lemm.ee · 2 pts · 3y (3 replies)

You can use an Input Event like this or if you want a more flexible solution you can shoot a raycast from the camera and check if you hit an object that can be clicked.

heimchen@discuss.tchncs.de · 1 pts · 3y (2 replies)

I am trying to add this to an Character 3D like this

func _on_input_event(camera, event, position, normal, shape_idx):
	print(event)
	if event is InputEventMouseButton: 
		if event.button_index == MOUSE_BUTTON_LEFT and event.pressed == true:
			print("PRESST")

but it doesn't print anything, it is Ray pickable and the signal is connected

simple@lemm.ee · 1 pts · 3y (1 reply)

Are you sure the input event is coming from your staticbody/rigidbody/characterbody? Also double check that you have a collisionshape/collisionpolygon under that so it can detect collisions. I've tried your code on my staticbody3D and it worked just fine.

func _on_static_body_3d_input_event(camera, event, position, normal, shape_idx):
	print(event)
	if event is InputEventMouseButton: 
		if event.button_index == MOUSE_BUTTON_LEFT and event.pressed == true:
			print("PRESST")
heimchen@discuss.tchncs.de · 2 pts · 3y

Yes thank you, the collisionshape was ConvexPolygonShap, changing it to box fixed it.