Skip to content

Instantly share code, notes, and snippets.

@vinod8990
Created March 29, 2016 02:40
Show Gist options
  • Save vinod8990/a3c2b8bf3444a7379caf to your computer and use it in GitHub Desktop.
Save vinod8990/a3c2b8bf3444a7379caf to your computer and use it in GitHub Desktop.
Align a cube on a sphere surface
extends TestCube
export(NodePath) var cam
export(NodePath) var sphere
var from
var to
var cast
func _ready():
set_process_input(true)
set_fixed_process(true)
pass
func _input(event):
if(event.is_pressed()):
var camera = get_node(cam)
from = camera.project_ray_origin(event.pos)
to = from + camera.project_ray_normal(event.pos) * 1000
cast = true
func _fixed_process(delta):
if(cast):
var ss = get_world().get_direct_space_state()
var r = ss.intersect_ray(from,to)
set_translation(r.position)
var t = get_global_transform().looking_at(get_global_transform().origin + r.normal,Vector3(1,0,1))
set_global_transform(t)
get_node(sphere).add_child(self)
print(r)
cast = false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment