Time !=0------python
MouseOverAny/
MouseClick—/
import bge
from bge import constraints
from bge import logic
def main():
cont = bge.logic.getCurrentController()
own = cont.owner
MOA = cont.sensors['MouseOverAny']
Click =cont.sensors['MouseClick']
Time = cont.sensors['Time']
if type(own['GrabTarget']) is not str:
Loc = own['GrabObject'].worldPosition+(own['GrabObject'].worldOrientation*own['GrabLoc'])
bge.render.drawLine(own.worldPosition,Loc,(1,0,0))
if Click.positive and own['Time']==0:
x=own['GrabTarget']
x=x.getConstraintId()
bge.constraints.removeConstraint(x)
own['GrabTarget']="Empty"
own['GrabObject']="Empty"
own['GrabLoc']="Empty"
own['Time']=30
if own['Time']>=1:
own['Time']-=1
if own['Time']==0 and MOA.positive and Click.positive:
if type(own['GrabTarget']) is str:
cam = bge.logic.getCurrentScene().objects['Camera']
Ray=[]
if cam.parent:
HP =MOA.hitPosition
Hp = cam.worldPosition-HP
Ray = cam.parent.rayCast(MOA.hitPosition,cam.worldPositi on,0,'',0,0,0)
else:
Ray = cam.rayCast(MOA.hitPosition,cam.worldPosition,0,'' ,0,0,0)
print('try')
if Ray[0]:
print('try1')
own['Time']=30
if 'Phys' in Ray[0]:
object_1 = Ray[0]
object_2 = own
constraint_type = 12
# get Object1 and Object2 physics IDs
physics_id_1 = object_1.getPhysicsId()
physics_id_2 = object_2.getPhysicsId()
# Use bottom right edge of Object1 for hinge position
diff = Ray[0].worldPosition-Ray[1]
diff = Ray[0].worldOrientation.inverted()*diff
diff*=-1
edge_position_x = diff.x
edge_position_y = diff.y
edge_position_z = diff.z
own['GrabLoc']=diff
own['GrabTarget']=constraints.createConstraint(physics_id_1, physics_id_2,constraint_type, edge_position_x, edge_position_y, edge_position_z)
own['GrabTarget'].setParam(0, 0, 0)
own['GrabTarget'].setParam(1, -0, 0)
own['GrabTarget'].setParam(2, -0, 0)
own['GrabTarget'].setParam(3, -3.14, 3.14)
own['GrabTarget'].setParam(4, -3.14, 3.14)
own['GrabTarget'].setParam(5, -3.14, 3.14)
own['GrabObject']=Ray[0]
main()
Attachments
RBJDemo1.blend (467 KB)