Нуждающийся
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений (для 9 пользователей)
|
Ответ: Вопросы очередного новичка
Попутно вспомнил что для игрока нужно исползовать капсулу. Вот за 20 минут сделал небольшой примерчик по поводу этой проблемы (воспользовался небольшим участком кода из примера от товарища cahekp из этой темы) Не вините за корявость, это делалось на скорую руку, да и я далеко не хороший программист на BB.
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Wireframe 1
cam=CreateCamera()
CameraRange cam,.1,100
PositionEntity cam,0,5,-12
lit1=CreateLight()
pxCreateWorld(0,"")
pxSetGravity(0,-9.8,0)
pl_b=pxBodyCreateCube(2,.1,2,0)
pxBodySetPosition pl_b,0,1,0
pl=CreateCube()
ScaleEntity pl,2,.01,2
pxBodySetEntity pl,pl_b
pl2_b=pxBodyCreateCube(5,.1,5,0)
pl2=CreateCube()
ScaleEntity pl2,5,.01,5
pxBodySetEntity pl2,pl2_b
Global char%
Global mesh%
Global naklon_pitch#
Global naklon_roll#
char=pxBodyCreateCapsule(1.5,.5,80)
pxBodySetPosition char,0,3,0
pxBodySetRotation char,0,0,0
mesh=CreateCylinder(8)
ScaleEntity mesh, .5, 1.5, .5
force#=800
While Not KeyHit(1)
UpdateWorld()
RenderWorld()
pxBodySetEntity mesh, char
If KeyDown(17)
pxBodyAddLocalForce(char,0,0,(vz#-pxBodyGetLocalLinearSpeedZ(char))*force#,0)
vz#=1
Else If KeyDown(31)
pxBodyAddLocalForce(char,0,0,-(vz#+pxBodyGetLocalLinearSpeedZ(char))*force#,0)
vz#=1
Else
pxBodyAddLocalForce(char,0,0,-pxBodyGetLocalLinearSpeedZ(char)*force#,0)
End If
If KeyDown(30)
pxBodyAddLocalForce(char,-(vx#+pxBodyGetLocalLinearSpeedX(char))*force#,0,0,0)
vx#=1
Else If KeyDown(32)
pxBodyAddLocalForce(char,(vx#-pxBodyGetLocalLinearSpeedX(char))*force#,0,0,0)
vx#=1
Else
pxBodyAddLocalForce(char,-pxBodyGetLocalLinearSpeedX(char)*force#,0,0,0)
End If
naklon_pitch=pxBodyGetRotationPitch(char)
naklon_roll=pxBodyGetRotationRoll(char)
If naklon_pitch>0 Then
pxBodySetRotation char,-naklon_pitch,-mx,0
pxBodySetRotation char,0,-mx,0
Else If naklon_pitch<0 Then
pxBodySetRotation char,Abs(naklon_pitch),-mx,0
pxBodySetRotation char,0,-mx,0
End If
If naklon_roll>0 Then
pxBodySetRotation char,0,-mx,-naklon_roll
pxBodySetRotation char,0,-mx,0
Else If naklon_roll<0 Then
pxBodySetRotation char,0,-mx,Abs(naklon_roll)
pxBodySetRotation char,0,-mx,0
End If
mx=mx+MouseXSpeed()*.2
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
pxRenderPhysic(30,0)
Flip
Wend
End
W,S,A,D и мышь - управление капсулой (не смотрите что меш - цилиндр, лень было делать капсулу )
Рад, если чем то помог тебе, TxN
З.Ы.: хочу тебя поблагодарить, за то, что заставил шевелиться мой мозг Если бы не твоя тема, я так бы и не решил проблему с капсулой Так и ждал бы нового урока от АВТОМАТа
Последний раз редактировалось St.AnGer, 21.09.2009 в 11:09.
Причина: Что то говорил про капсулу, а выложил с цилиндром... Спать хотелось, запутался :) TxN, я исправил одну строчечку, если воспользовался моим примером - исправь её у себя.
|