2c0mrad
Извращенец?
2Valet
Тут нужно преобразовать 3д координаты в 2д и наоборот:
Тыкай на куб и двига
Graphics3D(640, 480, 16, 2)
SetBuffer(BackBuffer())
Global SCR_CX = GraphicsWidth() / 2
Global SCR_CY = GraphicsHeight() / 2
Global CAM_ZOOM# = 1.1
Camera = CreateCamera()
CameraZoom(Camera, CAM_ZOOM)
Cube = CreateCube()
EntityPickMode(Cube, 2)
PositionEntity(Cube, 3, 0, 10)
Repeat
If MouseDown(1) Then
If (Obj = 0) Then
Obj = CameraPick(Camera, MouseX(), MouseY())
If Obj Then
Dx = MouseX() - EntityX2D(Obj)
Dy = MouseY() - EntityY2D(Obj)
EndIf
Else
PositionEntity2D(Obj, MouseX() - Dx, MouseY() - Dy)
EndIf
Else
Obj = 0
EndIf
RenderWorld()
Flip()
Until KeyDown(1)
End
Function PositionEntity2D(Entity, Px, Py)
PositionEntity(Entity, (Px - SCR_CX) * EntityZ(Entity) / SCR_CX / CAM_ZOOM, (SCR_CY - Py) * EntityZ(Entity) / SCR_CX / CAM_ZOOM, EntityZ(Entity))
End Function
Function EntityX2D(Entity)
Return EntityX(Entity) * SCR_CX * CAM_ZOOM / EntityZ(Entity) + SCR_CX
End Function
Function EntityY2D(Entity)
Return SCR_CY - (EntityY(Entity) * SCR_CX * CAM_ZOOM / EntityZ(Entity))
End Function
ЗЫ
И использовать CameraPick() чтобы определить клик на 3д обьекте.