Оператор ЭВМ
Регистрация: 25.09.2009
Адрес: Россия, Пермский край, г.Березники
Сообщений: 20
Написано одно полезное сообщение
|
Помогите не могу исправить(((
Уважаемые программисты, помогите кто чем сможет  . Никак не могу понять почему куб продолжает вращаться когда останавливается, после того как походишь(((
Вот код:

;=========================================BEGIN===========================
AppTitle "BCM"
Global phplayer%
Global naklon_pitch#
Global naklon_roll#
Global campitch
Global mxspd#
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
HidePointer
pxCreateWorld(1,"")
pxSetGravity(0,-9.8,0)
light=CreateLight()
AmbientLight 100,100,100
;=========================================GOROD============================
plane=CreatePlane()
tex=LoadTexture("c:\bcm\models\88sad\O23SCV96.jpg")
ScaleTexture tex,5,5
EntityTexture plane,tex
;=========================================END GOROD========================
;=========================================PLAYER===========================
phplayer=pxBodyCreateCapsule(1.2,0.5,80)
Global player=CreateCube()
;==============PIVOT==================
Global piv=CreatePivot(player)
;==============CAMERA=================
Global cam=CreateCamera(piv)
CameraRange cam,1,3000
PositionEntity cam,0,5,-10
;=========================================END PLAYER=======================
;=========================================MAIN LOOP========================
While Not KeyDown(1)=1
pxBodySetEntity player, phplayer
playercontorol
UpdateWorld
RenderWorld
pxRenderPhysic(30,0)
Flip
Wend
End
;=========================================END===============================
;=========================================FUNCTIONS=========================
Function playercontorol()
;=======================MOUSE========================
mxspd#=MouseXSpeed()*0.35
myspd#=MouseYSpeed()*0.35
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
campitch=campitch+myspd
If campitch<-30 Then campitch=-30
If campitch>20 Then campitch=20
pxBodySetRotation phplayer,0,pxBodyGetRotationYaw(phplayer)-mxspd#,0
If Not KeyDown(17) Then
RotateEntity piv,campitch,EntityYaw(piv)-mxspd#,0
End If
;=======================END MOUSE====================
force#=1000
vz#=1
vx#=1
If KeyDown(17)
pxBodyAddLocalForce(phplayer,0,0,(vz#-pxBodyGetLocalLinearSpeedZ(phplayer))*force#,0)
Else If KeyDown(31)
pxBodyAddLocalForce(phplayer,0,0,-(vz#+pxBodyGetLocalLinearSpeedZ(phplayer))*force#,0)
Else
pxBodyAddLocalForce(phplayer,0,0,-pxBodyGetLocalLinearSpeedZ(phplayer)*force#,0)
End If
If KeyDown(30)
pxBodyAddLocalForce(phplayer,-(vx#+pxBodyGetLocalLinearSpeedX(phplayer))*force#,0,0,0)
Else If KeyDown(32)
pxBodyAddLocalForce(phplayer,(vx#-pxBodyGetLocalLinearSpeedX(phplayer))*force#,0,0,0)
Else
pxBodyAddLocalForce(phplayer,-pxBodyGetLocalLinearSpeedX(phplayer)*force#,0,0,0)
End If
If KeyHit(57)
pxBodyAddLocalForce(phplayer,0,(vz#-pxBodyGetLocalLinearSpeedZ(phplayer))*force#,0,0)
End If
naklon_pitch=pxBodyGetRotationPitch(phplayer)
naklon_roll=pxBodyGetRotationRoll(phplayer)
If naklon_pitch>0 Then
pxBodySetRotation phplayer,-naklon_pitch,-mxspd#,0
pxBodySetRotation phplayer,0,-mxspd#,0
Else If naklon_pitch<0 Then
pxBodySetRotation phplayer,Abs(naklon_pitch),-mxspd#,0
pxBodySetRotation phplayer,0,-mxspd#,0
End If
If naklon_roll>0 Then
pxBodySetRotation phplayer,0,-mxspd#,-naklon_roll
pxBodySetRotation phplayer,0,-mxspd#,0
Else If naklon_roll<0 Then
pxBodySetRotation phplayer,0,-mxspd#,Abs(naklon_roll)
pxBodySetRotation phplayer,0,-mxspd#,0
End If
End Function
PS: Управляется куб: w,a,s,d + мышь
|