Показать сообщение отдельно
Старый 21.09.2009, 00:49   #16
St.AnGer
Нуждающийся
 
Регистрация: 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, я исправил одну строчечку, если воспользовался моим примером - исправь её у себя.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
TxN (21.09.2009)