ПроЭктировщик
Регистрация: 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 ( сам создал для удобства )
|