Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)

Graphics3D 640,480,16,2
SetBuffer BackBuffer()
cam=CreateCamera()
Light=CreateLight()
PositionEntity cam,0,5,-10
TurnEntity cam,20,0,0
phWorldCreate(1,"")
;phMatSetDefFriction(1,0.9)
phMatSetDefElasticity(0.0)
Plan=CreatePlane()
EntityColor plan,90,182,211
mat_cub=phMatCreate()
cub=CreateCube()
cub_=phBodyCreateBox(2,2,2,4)
phBodySetEntity cub_,cub
phBodySetMat(cub_,mat_cub)
mat_cub2=phMatCreate()
cub2=CreateCube()
cub2_=phBodyCreateBox(2,2,2,1)
phBodySetEntity cub2_,cub2
phBodySetDamping cub_,.5,1
phBodySetMat(cub_,mat_cub)
phMatSetFriction mat_cub,mat_cub2,1,.9
Repeat
UpdateChar(cub_)
If KeyHit(57) phBodySetPos cub2_,Rnd(-2,2),10,Rnd(-2,2)
phWorldStep(100)
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
Function UpdateChar(body%,maxvel#=5)
phBodySetOmega body,-phBodyGetOmegaX(body),-phBodyGetOmegaY(body),-phBodyGetOmegaZ(body);чтоб не крутился
;проверяем, есть ли под ногами земля (или хоть что-то)
x# = phBodyGetX(body)
y# = phBodyGetY(body)
z# = phBodyGetZ(body)
If (phRayCast(x,y,z,x,y-5.1,z));на земле
;желаемая скорость
TFormVector (KeyDown(32)-KeyDown(30)),0,(KeyDown(17)-KeyDown(31)),cub,0
vx# = TFormedX()*maxvel
vy# = TFormedY()*maxvel
vz# = TFormedZ()*maxvel
;текущая скорость
vxcur# = phBodyGetVelX(body)
vycur# = phBodyGetVelY(body)
vzcur# = phBodyGetVelZ(body)
;"вежливо" устанавливаем ту скорость, которую хотим мы
;считаем желаемое изменение скорости
dvx# = (vx-vxcur);*.1
If (vx*vx+vz*vz)<.001 Then dvy# = vy - vycur Else dvy# = 0
dvz# = (vz-vzcur);*.1
phBodyAddImpulse(body,x,y,z,dvx,dvy,dvz)
EndIf
End Function
почему то не работают материалы,хотя трение должно быть максимальным..
|