Показать сообщение отдельно
Старый 23.07.2013, 21:05   #11
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: PhysX и перетаскивание предметов


xkeyhit18= xKeyHit(1
xCameraPick(cam,xMouseX(),xMouseY())

If control_body=0 And xkeyhit18=1

pxRaySetPosition ray,xEntityX(cam,1),xEntityY(cam,1), xEntityZ(cam,1)
pxRaySetDir(ray, xPickedX#() - xEntityX(cam,1), xPickedY#() - xEntityY(cam,1), xPickedZ#() - xEntityZ(cam,1))


cpos_x = pxRayGetPickX(ray,1)
cpos_y = pxRayGetPickY(ray,1)
cpos_z = pxRayGetPickZ(ray,1)
picked_body = pxRayGetBody(ray, 1)

If (picked_body)




control_body = pxBodyCreateSphere(1,1)
pxBodySetPosition(control_body,pxRayGetPickX#(ray, 1),pxRayGetPickY#(ray,1),pxRayGetPickZ#(ray,1))
pxKinematicSet(control_body)
pxBodySetFlagResponse(control_body, 0)



Pick_pos_x# = cpos_x - pxBodyGetPositionX#(picked_body)
Pick_pos_y# = cpos_y - pxBodyGetPositionY#(picked_body)
Pick_pos_z# = cpos_z - pxBodyGetPositionZ#(picked_body)


cJoint = pxJointCreateDistance(picked_body, control_body, Pick_pos_x, Pick_pos_y, Pick_pos_z, 0, 0, 0)


pxJointDistanceSetPoint(cJoint, 0,1)
pxJointSetBreakable (cJoint,550,100000000000)




EndIf
EndIf
;EndIf

If xkeyhit18=1 And control_body=1

pxDeleteBody(control_body)
control_body = 0
pxDeleteJoint(cJoint)
cJoint = 0
EndIf


If control_body
pxBodySetRotation picked_body,0,0,0
pxKinematicSetPosition (control_body, xEntityX(point,1),xEntityY(point,1), xEntityZ(point,1))
jointb=pxJointIsBroken (cJoint)

EndIf

If jointb
pxDeleteBody(control_body)
control_body = 0
pxDeleteJoint(cJoint)
cJoint = 0

EndIf


говнокод но работает , если доработать будет отлично !
(Offline)
 
Ответить с цитированием