Показать сообщение отдельно
Старый 29.03.2011, 17:53   #8
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Физика и капсула

Там нету никаких физ. полигонов, что направлены backface'ами вниз, и когда капсула идёт вверх, заходит в эти трианглы но с задней (backface) стороны?
Moka, вроде нет.


Может я чет в коде намудрил:

Include "xors3d.bb"

xSetAntiAliasType xGetMaxAntiAlias()
xAppTitle "Shooter"
xGraphics3D 800,600, 32, 0, 1
xCreateDSS 1024, 1024
xHidePointer 


Global jump=0,opt=0,timer=0,t#=0,xd#=0,xr,tel,bgh#,zadr#=0,pps#=0,prm#=0,kar=0,fres=0,J=0,fres2=0,kmc=1,o=0,pxo#=0,ps#=0,cpe#=1

Global fr#,fr2#,slow#,orbit#,ch#,vest=0,ck=1,sl#=10,kof=0,speedi=0,gravi=0





cube = xLoadMesh("cap.b3d")
xEntityAlpha cube,0.3


cubs=xCreateCube()
xScaleEntity cubs,4,13,4
xEntityAlpha cubs,1
xEntityColor cubs,0,255,0


cubs3=xCreateCube()
xScaleEntity cubs3,16,0.01,16
xEntityColor cubs3,255,0,0
xEntityAlpha cubs3,0

cam = xCreateCamera()
xCameraRange cam,1,10000

light = xCreateLight()
xPositionEntity light,0,0,0
xRotateEntity light,80,60,0
xLightConeAngles light,0,9
xLightRange light,180


conelight =xCreateCone()
xRotateEntity conelight,-90,0,0
xScaleEntity conelight,10,10,10
xEntityParent conelight,light

xInitShadows(1024, 1024, 640)

xAmbientLight 160,160,160
xSetShadowParams 6, 0.99, 1, 100
xLightEnableShadows light, True
xLightShadowEpsilons light, 0.0001, 0.16
xCameraEnableShadows cam


automat = xLoadMesh("auto.b3d",cam)
xRotateEntity automat,0,180,0
xPositionEntity automat,2.9,-13,13
xScaleEntity automat,0.1,0.1,0.1



PotMesh = xLoadMesh("fran4.b3d")
xScaleEntity PotMesh,0.3,0.3,0.3
xEntityAddTriMeshShape(PotMesh,0)
xPositionEntity PotMesh,100,-2000,0





Repeat
		
;If xKeyDown(8) Then xTurnEntity light,0.3,0,0

;If xKeyDown(7) Then xTurnEntity light,-0.3,0,0
	

	
	
If xMeshesIntersect(cubs,PotMesh) Then
me_c1=1
Else
me_c1=0
orbit=1
EndIf


	mx#=(xMouseYSpeed()*0.2)
    my#=(xMouseXSpeed()*0.2)

dmx#=dmx#+mx#
dmy#=dmy#-my#

xRotateEntity cam,dmx,dmy,0
xRotateEntity cube,0,dmy,0
xEntityFriction(PotMesh,0.9)

slow=xCurv(slow,xEntityY(cube),4)+ck*5


xPositionEntity cam,xEntityX(cube),Cos(pxo)+slow,xEntityZ(cube)-50
xPositionEntity cubs,xEntityX(Cube),xEntityY(Cube)-15,xEntityZ(Cube)
xPositionEntity cubs3,xEntityX(Cube),xEntityY(Cube)-10,xEntityZ(Cube)

    xMoveMouse xGraphicsWidth()/2,xGraphicsHeight()/2

pxo=pxo+7
If pxo>=360 Then pxo=360


xPhysicsDebugRender(0)

	force=230
	max_speed=10
	


If me_c1=1 Then
If tel=2 Then
foc#=1000
EndIf

If tel=1 Then
foc#=foc#+1200
tim=0
EndIf
If foc#>=speedi Then foc=speedi

Else
If kmc=1
foc#=0
Else
foc#=foc#-3000
If foc#<=100 Then foc=100
EndIf
EndIf


tel=2


Fc=Cos(xEntityYaw(cube)-90)*foc
Fs=Sin(xEntityYaw(cube)-90)*foc

Fc2=Cos(xEntityYaw(cube)+180)*foc/1
Fs2=Sin(xEntityYaw(cube)+180)*foc/1

Fc3=Cos(xEntityYaw(cube))*foc/1
Fs3=Sin(xEntityYaw(cube))*foc/1

WS=xKeyDown(17)-xKeyDown(31)
AD=xKeyDown(30)-xKeyDown(32)

If WS<>0 And AD<>0 Then 
speedi=5000
Else
speedi=7000
EndIf

If fres<=1
If xKeyDown(17)
xEntityApplyForce(Cube, -Fc, 0, -Fs,0,0,0)
If xKeyDown(42) Then
xEntityApplyForce(Cube, -Fc/1.6*10, 0, -Fs/1.6*10,0,0,0)
EndIf
tel=1
EndIf
If xKeyDown(31)
xEntityApplyForce(Cube, Fc, 0, Fs,0,0,0)
tel=1
EndIf
If xKeyDown(30)
xEntityApplyForce(Cube, Fc2, 0, Fs2,0,0,0)
tel=1
EndIf
If xKeyDown(32)
xEntityApplyForce(Cube, Fc3, 0, Fs3,0,0,0)
tel=1
EndIf
EndIf


If orbit=1 Then ch=ch+1
If orbit=0 Then ch=0
If fres2=2 And (ch>90 Or delta=0) Then pxo=0:delta=0


If tel=2 Then tim=tim+1


If me_c1 Then
fres2=fres2+2
If fres2>=25 Then
orbit=0
If tel=1 Then xd#=0.99
If tel=2 Then xd#=1
fres2=25
Else
xd=0.92
EndIf 
Else
fres2=0
xd#=0
EndIf


If jump=0 
If xKeyHit(57) Then Goto part3
EndIf

If jump=1
If xKeyHit(57) Then 
J=1
jump=0
delta=1
EndIf
EndIf

.part3


xEntityContactDistance(Cube,1)




fr=1
If xKeyDown(17) Then
If xKeyDown(42)
fr=0.6
EndIf
EndIf
fr2=1.1








If kmc=1 Then o=o+1
If o>=20 Then 
kmc=0
o=0
EndIf
If kmc=1 Then 
jump=0
EndIf


If kmc=0 Then 
If me_c1=1 Then
jump=1
Else
jump=0
EndIf
EndIf




If J=1 Then
kmc=1
fres2=0
fres=fres+1 
If fres>3 And fres<20 Then
jump=0
xd=0
If xKeyDown(17) Then
xEntityApplyForce(Cube,Fc/fr, 2,Fs/fr,0,0,0)
EndIf
If xKeyDown(31)
xEntityApplyForce(Cube,-Fc/fr, 2,-Fs/fr,0,0,0)
EndIf
If xKeyDown(30)
xEntityApplyForce(Cube,-Fc2/fr, 2,-Fs2/fr,-100,0,0)
EndIf
If xKeyDown(32)
xEntityApplyForce(Cube,-Fc3/fr, 2,-Fs3/fr,0,0,0)
EndIf

EndIf




If fres>=9
J=0
fres=0
EndIf 


If fres<=3 Then
xEntityApplyForce(Cube, 0, 100, 0,0,0,0)
xd=0
jump=0
If xKeyDown(17) Then
xEntityApplyForce(Cube, Fc*fr2, 0, Fs*fr2,0,0,0)
EndIf
If xKeyDown(31)
xEntityApplyForce(Cube, -Fc*fr2, 0, -Fs*fr2,0,0,0)
EndIf
If xKeyDown(30)
xEntityApplyForce(Cube, -Fc2*fr2, 0, -Fs2*fr2,0,0,0)
EndIf
If xKeyDown(32)
xEntityApplyForce(Cube, -Fc3*fr2, 0, -Fs3*fr2,0,0,0)
EndIf
xRotateEntity cube,0,dmy,0
gravi=60
EndIf




Else
If me_c1=1 Then
If fres2>=5 And fres2<17 Then
gravi=-80
EndIf
ElseIf fres2=0
gravi=-50
ElseIf fres2=25
gravi=-10
EndIf
EndIf

If xEntityContactDistance(Cube,1) <>0 Then xRotateEntity cube,0,0,0


If xKeyHit(29) Then
vest=1-vest
If vest=1 Then
xFreeEntityShapes(cube)
fres2=0
xd=0.96
xEntityAddHullShape(cube,100)
ck=0.5
Else
xd=0
ck=1
N=0
xFreeEntityShapes(cube)
EndIf
EndIf

N=N+1
If N<5 Then
xd=0
xMoveEntity cube,0,1,0
Else
N=5
EndIf

If n=2 Then 
xEntityAddHullShape(cube,100)
fres2=3
EndIf



xEntityGravity(cube,0,gravi,0)

xEntityDamping(cube,xd#,-999)




xUpdateWorld(60)	




	xRenderWorld(1,1)
	

xText 60,100,"   Jump =  "+foc+"   "+fres2+"  "+cpe+"  "+o+"     "+xd+"Dist = "+xEntityContactDistance(Cube,1),1,1
xText 400,100,"Fps="+xGetFPS(),1,1

xFlip
Until xKeyHit(1)
End
xCurv - аналог CurveValue ( сам создал для удобства )
(Offline)
 
Ответить с цитированием