I have an empty and I have set a sphere as its child. When I change the empty's worldPosition(via right-clicking with mouse) the sphere teleports to entirely different location. The strange thing is that when I print the sphere's coordinates it is exactly the same as the empty's and the mouse cursor's. Any ideas?
Here is the module I wrote.
#Import the bge library. import bge #Make the mouse cursor visible during game running time. bge.render.showMouse(True) #Set the current game scene and python controller to variables. scene = bge.logic.getCurrentScene() cont = bge.logic.getCurrentController() #The function "initialization" is responsible for setting all scene objects, object sensors and object actuators to variables. #These variables are created into the function but are for global use. Their names are the names of the objects/sensors/actuators in blender. def initialization(): for k in scene.objects: exec("globals()[\"%s\"]=scene.objects[\"%s\"]"%(k,k)) for k in ground.sensors: exec("globals()[\"%s\"]=ground.sensors[\"%s\"]"%(k,k)) for k in cont.actuators: exec("globals()[\"%s\"]=cont.actuators[\"%s\"]"%(k,k)) def mouse_2D_coor(): global mX, mY mouse_pos = bge.logic.mouse.position #Cramp the coordinates to what the camera sees. (0, 0) at the top left corner and (1, 1) at the bottom right corner. mX = max(0.0,min(1.0,mouse_pos)) mY = max(0.0,min(1.0,mouse_pos)) #print ("Mouse coor :",mX,mY) def empty_to_pos(): cursor_empty.worldPosition = (mop.position,mop.position,cursor_empty.worldPosition.z) initialization() #print (mop.hitPosition) if (right_click.positive): empty_to_pos() print (cursor_empty.worldPosition) print ("Mouse",mop.position) print ("sphere",sphere.worldPosition) print ("I reached the end of track.py")
Here is the blend file