Показать сообщение отдельно
Старый 13.03.2011, 12:51   #1352
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 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
почему то не работают материалы,хотя трение должно быть максимальным..
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием