Показать сообщение отдельно
Старый 11.04.2009, 19:43   #97
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D

HolyDel, да я ещё в позопрошлое воскресенье понял что всё с этим норм
я вот незнаю что с КомпоундДеск происходит когда мы уже с помощью него создали тело. А так всё вродь норм.

Воть Кодь

1) аним энтити 2)имя чилда 3)кол-во чилдов
Function CreateDestStatObject(etalon,namechild$,CountC)

Descs = pxCreateCompoundDesc()
Набираем, загружаем боди чилдов в КомпоундДеск
For i=1 To CountC

semple=FindChild(etalon,namechild+i)
If semple<>0

Sh=CompoundCreateAddHullShape(Descs,semple)

pxCompoundSetShapePos(Sh,EntityX(semple),EntityY(s emple),EntityZ(semple))
pxCompoundSetShapeRot(Sh, EntityPitch(semple),EntityYaw(semple),EntityRoll(s emple))
CretSet=CretSet+1
EndIf
Next
If CretSet>0

posx=EntityX(etalon)
posy=EntityY(etalon)
posz=EntityZ(etalon)


For oco.Px_Object = Each Px_Object
Если с таким энтити есть боди то
If oco\cube_mesh=etalon
Удаляем его
pxdeletebody(oco\cube_body)
Delete oco
Создаём новое
oco.Px_Object = New Px_Object
oco\cube_mesh=etalon
;oco\cube_body =pxCreateCompound(Descs,0)
;pxbodysetposition(oco\cube_body,posx,posy,posz)
;pxBodySetRotation oco\cube_body,EntityPitch(etalon),EntityYaw(etalon ),EntityRoll(etalon)
Next1=1

Exit

EndIf
Next
Если нет такого, то просто создаём
If Next1=0

oco.Px_Object = New Px_Object
oco\cube_mesh=etalon

oco\cube_body =pxCreateCompound(Descs,0)
pxbodysetposition(oco\cube_body,posx,posy,posz)
pxBodySetRotation oco\cube_body,EntityPitch(etalon),EntityYaw(etalon ),EntityRoll(etalon)
oco\life=1
oco\TypeDest=2
oco\Longlife=-1
EndIf
Next1=0

CretSet=0

EndIf

End Function
(Offline)
 
Ответить с цитированием