tjslash | Дата: Суббота, 19 Сентября 2009, 09:49 | Сообщение # 3 |
![tjslash](http://www.igrostroenie.my1.ru/avatar/64/509170.jpg) Продвинутый
Группа: Участники
Сообщений: 132
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: студент
Команда: Йа один((
Проектов: "Blood Life"
| Почти все сделал, только возникает трабла с мышкой. По оси Y - все гуд, а по оси X - не гуд, т.к. происходит поворот камеры, а не самой физмодели, т.е. перемещаеться модель не туда, куда смотрит камера... Подскажите в чем косяк... Code Graphics3D 800,600,32,0 SetBuffer BackBuffer() pxCreateWorld(1,"key") pxSetGravity(0,-9.8,0) Global cam=CreateCamera() PositionEntity cam,0,5,-15 RotateEntity cam,20,0,0 CameraRange cam, 0.01, 500 light=CreateLight() plane=CreateMirror() plane_tex = CreatePlane() EntityColor plane_tex,30,30,255 EntityAlpha plane_tex,0.5 MoveEntity plane_tex,0,0.1,0
sphere=CreateSphere() sphere_body=pxBodyCreateSphere(1,10) pxBodySetPosition sphere_body,0,5,0
Dim cube(10) Dim cube_body(10) For i=1 To 10 cube(i)=CreateCube() cube_body(i)=pxBodyCreateCube(1,1,1,10) pxBodySetPosition(cube_body(i),Rnd(-10,10),Rnd(20),Rnd(-10,10)) Next
W hile Not KeyHit(1) keydownUP=KeyDown(200) keydownDOWN=KeyDown(208) keydownLEFT=KeyDown(203) keydownRIGHT=KeyDown(205) force=100 max_sp eed=10 pxBodySetAngularSpeed(sphere_body, 0,Float(MouseXSpeed()), 0) PositionEntity cam,EntityX(sphere,1),EntityY(sphere,1),EntityZ(sphere,1),1 RotateEntity cam,EntityPitch(cam)+Float(MouseYSpeed())/3.0,EntityYaw(sphere),0,1 MoveMouse GraphicsWidth()*0.5, GraphicsHeight()*0.5 If keydownUP Then pxBodyAddForce(sphere_body,0,0,(max_speed-pxBodyGetLinearSpeedZ(sphere_body))*force,0) If keydownDOWN Then pxBodyAddForce(sphere_body,0,0,-(max_speed+pxBodyGetLinearSpeedZ(sphere_body))*force,0) If keydownLEFT Then pxBodyAddForce(sphere_body,-(max_speed+pxBodyGetLinearSpeedX(sphere_body))*force,0,0,0) If keydownRIGHT Then pxBodyAddForce(sphere_body,(max_speed-pxBodyGetLinearSpeedX(sphere_body))*force,0,0,0) If (Not keydownUP) And (Not keydownDOWN) Then pxBodyAddForce(sphere_body,0,0,-pxBodyGetLinearSpeedZ(sphere_body)*force,0) If (Not keydownLEFT) And (Not keydownRIGHT) Then pxBodyAddForce(sphere_body,-pxBodyGetLinearSpeedX(sphere_body)*force,0,0,0)
pxRenderPhysic(30,0) pxBodySetEntity(sphere,sphere_body) For i=1 To 10 pxBodySetEntity(cube(i),cube_body(i)) Next
UpdateWorld RenderWorld
Flip Wend End
|
|
| |
tjslash | Дата: Суббота, 19 Сентября 2009, 11:55 | Сообщение # 5 |
![tjslash](http://www.igrostroenie.my1.ru/avatar/64/509170.jpg) Продвинутый
Группа: Участники
Сообщений: 132
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: студент
Команда: Йа один((
Проектов: "Blood Life"
| Эмм... Вот приаттачу еще тени Ahadow и выложу. Кстати, по поводу связки Blitz3C+PhysX+Ahadow, ни у кого не было траблы, что анимированная модель парентится к камере??? О_о Для начала я делал как: 1) Создал карту, пару объектов, включая аниммеш, и добавил тени Ahadow - Все ОК! 2) Та же карта, + Ahadow + Newton - Все Ок! 3) Та же карта, - Newton, - Ahadow, +PhysX - Все Ок! 4) Та же карта, +PhysX, +Ahadow - и вот тут выскакивает трабла.... Подскажите, в чем тут может быть конфликт... Code Include "include\Ashadow.bb" Include "include\consts.bb"
AGraphics3D 800,600, 32, 1 PostProcessInit() SetBuffer BackBuffer() Global n#,k=0,w=1.1 ,free,in_mesh,enable=1 Global FL_Pitch#,FL_Yaw#,FL_Roll#,FL_XSpeed#,FL_YSpeed#,FL_ZSpeed# Global Player_Start_X#=-5, Player_Start_Y#=5, Player_Start_Z#=-5 VWait pxCreateWorld(1, "key") pxSetGravity(0, -10, 0) Global camera = CreateCamera() PositionEntity camera, 100,40,100 CameraRange camera,1,1000 PositionEntity camera,Player_Start_X#, Player_Start_Y#, Player_Start_Z# Sky = LoadSkyBox ( "rock" ) EntityColor Sky,200,200,200 ScaleEntity Sky, 5, 5, 5 CreateReceiver sky,4 EntityOrder sky,1 light=CreateSLight(2,300,255,255,255) Center=CreatePivot() PositionEntity light,50,80,0
ReflectTex = CreateTexture(128,128, 128+256) tex2=LoadTexture("wood_panel_00.jpg") SphereR=ACreateSphere(10,0,0)
CreateRefractMesh(SphereR,3, 0) ; set refractive mesh If BUMPENVMAP_SUPPORT SetRefractBumpTexture SphereR, TEX_02b
PositionEntity SphereR,20,10,3 ScaleEntity SphereR,5,5,5 EntityBlend SphereR,3 EntityAlpha SphereR,.5 EntityTexture SphereR, ReflectTex
Cylinder=ACreateCylinder(6,1,0,2,500) ; create caster PositionEntity Cylinder,30,10,20 ScaleEntity Cylinder,5,15,5 RotateEntity Cylinder,91,0,0 UpdateCasterGeom(Cylinder) EntityTexture Cylinder,tex2
levelmesh = ALoadMesh("level_0_2.b3d") ScaleMesh levelmesh,20,5,20 PositionEntity levelmesh, 0, 0, 0 celltex = LoadTexture("level_0_0.bmp") ScaleTexture celltex,.005,.005 EntityTexture levelmesh,celltex
cube3=ACreateCube(0,2,200) ;create caster PositionEntity cube3,60,10,60 ScaleEntity cube3,1,10,1 EntityTexture cube3,tex2
cube4=ACreateCube(0,2,200);create caster PositionEntity cube4,-60,10,60 ScaleEntity cube4,1,10,1 EntityTexture cube4,tex2
cube5=ACreateCube(0,2,500);create caster PositionEntity cube5,60,10,-60 ScaleEntity cube5,1,10,1 EntityTexture cube5,tex2
cube6=ACreateCube(0,2,200);create caster PositionEntity cube6,-60,10,-60 ScaleEntity cube6,1,10,1 EntityTexture cube6,tex2
Model= ALoadAnimMesh("mak_running.3DS",0,2) PositionEntity Model,-5,2,-5 ScaleEntity Model, 0.05, 0.05, 0.05 RotateEntity Model, 0, 180, 0 Model2 = ACopyEntity(Model,0,2) ; copy caster PositionEntity Model2,8,2,10 Animate Model2,1,1
House=ALoadMesh("house_0_2.b3d",0) ScaleMesh House,1,1,1 PositionEntity House,0,0,0 in_mesh=BodyCreateMesh%(House) pxBodySetPosition(in_mesh,0,5,0) surf = GetSurface(House,1) nft = CountTriangles(surf) nvv = CountVertices(surf) Global Mesh= CreateSphere(32) Global Body = pxBodyCreateCapsule(3,2,1) ScaleEntity Mesh,0.5,0.5,0.5 pxBodySetPosition Body ,Player_Start_X#, Player_Start_Y#, Player_Start_Z# pxBodySetEntity(Mesh,Body) EntityAlpha Mesh, 0
Global TEST=CreateCube() PositionEntity TEST, 50,8,75 ScaleEntity TEST, 2,2,2 Cls MoveMouse GraphicsWidth()*0.5, GraphicsHeight()*0.5 ;============================================================== While Not KeyHit(1) playerwalk2(camera, Body ) MoveMouse GraphicsWidth()*0.5, GraphicsHeight()*0.5 pxBodySetEntity(Mesh,Body)
PositionEntity Sky,EntityX( camera,1 ) ,EntityY( camera,1 ), EntityZ( camera,1 ) TurnEntity light,0,.5,0 MoveEntity light,.0,.0,.5
pxRenderPhysic(30,0) UpdateWorld() RenderWorld ARenderWorld(camera) ; update and render shadow
UpdateRefract(camera) ; update refract PostProcess_Render (camera) ; render refracr
Flip Wend Cls End Function LoadSkyBox( file$ ) m=CreateMesh() ;front face b=LoadBrush( file$+"_FR.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0 AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3: FreeBrush b ;right face b=LoadBrush( file$+"_LF.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0 AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;back face b=LoadBrush( file$+"_BK.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0 AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;left face b=LoadBrush( file$+"_RT.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0 AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;top face b=LoadBrush( file$+"_UP.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0 AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;bottom face b=LoadBrush( file$+"_DN.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1 AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ScaleMesh m,100,100,100 FlipMesh m EntityFX m,1 Return m End Function
Function BodyCreateMesh(mesh%)
nsurf = CountSurfaces(mesh) nvert = 0 nface=0 For ns = 1 To nsurf Local surf = GetSurface(mesh,ns) nface = nface+CountTriangles(surf) nvert = nvert +CountVertices(surf) Next
fbank = CreateBank(nface*4*3) nf = 0 vbank = CreateBank(nvert*4*3) nv = 0 For ns = 1 To nsurf surf = GetSurface(mesh,ns) nfv = CountTriangles(surf) For nfc = 0 To nfv -1 PokeInt fbank,nf*12+0,TriangleVertex(surf,nfc,0) PokeInt fbank,nf*12+4,TriangleVertex(surf,nfc,1) PokeInt fbank,nf*12+8,TriangleVertex(surf,nfc,2) nf=nf+1 Next
nvv = CountVertices(surf) For nvc = 0 To nvv - 1 PokeFloat vbank,nv*12+0,VertexX(surf,nvc) PokeFloat vbank,nv*12+4,VertexY(surf,nvc) PokeFloat vbank,nv*12+8,VertexZ(surf,nvc) nv = nv+1 Next Next bbb%=pxCreateTriMesh(vbank, fbank, nvert, nface,0) FreeBank vbank FreeBank fbank Return bbb% End Function
Function playerwalk2(FL_Cam, player_body) speed#=1.1 FL_Pitch#=FL_Pitch#-(-MouseYSpeed()*0.02) : FL_Pitch#=FL_Pitch#/1.2 FL_Yaw#=FL_Yaw#+-(MouseXSpeed()*0.02) : FL_Yaw#=FL_Yaw#/1.2 MoveMouse (GraphicsWidth()/2,GraphicsHeight()/2) FL_ZSpeed#=FL_ZSpeed#+Float(KeyDown(17)-KeyDown(31))*0.92 : FL_ZSpeed#=FL_ZSpeed#/speed#; w and s FL_XSpeed#=FL_XSpeed#+Float(KeyDown(32)-KeyDown(30))*0.92 : FL_XSpeed#=FL_XSpeed#/speed# ; a and d FL_YSpeed#=0 FL_Roll#=(FL_Yaw#*1.1)-(FL_XSpeed#*2.3) FL_Old_Pitch#=EntityPitch#(FL_Cam) FL_Old_Roll#=EntityRoll#(FL_Cam) RotateEntity FL_Cam, 0,EntityYaw#(FL_Cam),0 MoveEntity FL_Cam,FL_XSpeed#,0,FL_ZSpeed# RotateEntity FL_Cam, FL_Old_Pitch#,EntityYaw#(FL_Cam),FL_Old_Roll# Local cp#=EntityPitch(FL_Cam,True)+FL_Pitch# If cp<-89 Then cp=-89 If cp>89 Then cp=89 RotateEntity FL_Cam,cp,EntityYaw(FL_Cam)+FL_Yaw#,0
If KeyDown(57)=1 pxBodyAddForce(player_body,0,25,0,0) EndIf;if in air If KeyDown(57)=0 pxBodySetAngularDamping(player_body, 1) pxBodySetLinearDamping(player_body, 0) EndIf
pxBodySetRotation(player_body,0,EntityYaw#(FL_Cam),0) pxBodySetLocalLinearSpeed(player_body,FL_XSpeed#*pxBodyGetMass(player_body),pxBodyGetLinearSpeedY(player_body),FL_ZSpeed#*pxBodyGetMass(play er_body)) PositionEntity FL_cam, pxBodyGetPositionX(player_body),pxBodyGetPositionY(player_body)+1,pxBodyGetPositionZ(player_body) End Function
|
|
| |