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?

top 4 comments

sorted by: hot top controversial new old
[–] 2 points 3 years ago (3 children)

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.

  • source
  • hideshow 3 child comments
  • [–] [S] 1 point 3 years ago (2 children)

    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

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 3 years ago* (1 child)

    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")
    
  • source
  • parent
  • hideshow 1 child comment
  • load more comments
    view more: next ›