Collisions Problem
Blitz3D Forums/Blitz3D Programming/Collisions Problem
| ||
Hello Long time I havn't used b3d so I'm pretty sure I'm doing something wrong. I've searched the forum for help, but none worked. Anyway, here's my code: If Windowed3D() Graphics3D 1024,800,0,2 Else Graphics3D 1024,800,0,1 EndIf ;MODEL fil$="Shming4.b3d" model=LoadAnimMesh( fil$ ) If model=0 RuntimeError "Unable to load 3D mesh:"+fil$ ScaleEntity model,0.01,0.01,0.01 PositionEntity model,0,200,0 animman=FindChild(model,"Cylinder02") animichael=FindChild(model,"Bip01") EntityRadius animman,1,1 EntityRadius animichael,1,1 EntityRadius model,1,1 EntityType animman,1 EntityType model,1 EntityType animichael,1 ;;MODEL SEQ StartWalk_SEQ=ExtractAnimSeq(animman,0,19) Walk_SEQ=ExtractAnimSeq(animman,20,42) StopWalk_SEQ=ExtractAnimSeq(animman,43,97) ;CAMERA camera=CreateCamera(animichael) CameraRange camera,0.1,100000000 PositionEntity camera,-700,500,0 PointEntity camera,animichael light=CreateLight() TurnEntity light,45,45,0 ;SKY Global sky = CreateSphere(16,camera) FlipMesh sky ScaleEntity sky,10000,10000,10000 PositionEntity sky, 0,50,0 sky_tex = LoadTexture("media\sky.bmp") EntityTexture sky,sky_tex ;TERRAIN Global terrain = LoadTerrain("media\height3.jpg") TerrainDetail terrain,2500,True ScaleEntity terrain, 3,15,3 PositionEntity terrain,-20,-8,-20 ter_tex = LoadTexture("media\mossyground.bmp") EntityTexture terrain,ter_tex EntityRadius terrain,1,1 EntityType terrain,2 movehasdone=False WalkKeyUp=False collisiontext=False Collisions 1, 2, 1, 2 Repeat If EntityCollided(model,2) collisiontext=True End If MoveEntity model,0,-1,0 If KeyHit(1) End If KeyDown(200) TurnEntity model,0,0,0;Up If KeyDown(208) TurnEntity model,0,0,0;Down If KeyDown(203) TurnEntity model,0,1,0;Left If KeyDown(205) TurnEntity model,0,-1,0;Right If KeyHit( 17) Then ;W Animate animman,3,0.8,StartWalk_SEQ,10 movehasdone=False walkkeyup=True End If If KeyDown(17) And Animating(animman)=False And movehasdone=True Then Animate animman,3,0.8,Walk_SEQ,5 movehasdone=False walkkeyup=True End If If Animating(animman)=False And movehasdone=True And walkkeyup=True Then Animate animman,3,0.8,StopWalk_SEQ,10 movehasdone=False walkkeyup=False End If If Animating(animman)=False And movehasdone=False Then PositionEntity model,EntityX(animichael,True),EntityY(animichael,True),EntityZ(animichael,True) PositionEntity animichael,0,0,0 movehasdone=True End If ;If KeyDown( 30);A ;If KeyDown( 31);S ;If KeyDown( 32);D ;If KeyDown( 44);Z ;If KeyDown( 45);X UpdateWorld RenderWorld Text 0,10,"x:"+EntityX(model)+" y:"+EntityY(model)+" z:"+EntityZ(model)+",col:"+collisiontext Flip Forever the b3d model is an animated model, created in 3d studio max, animated using biped skin and a .bip file, and exported using b3d pipeline. I would really appreciate any help! Thanks in advance |
| ||
Well, as we can't actually run your code properly without the model you're using, it'd help if you described the actual problem you're having. Anyway, looking at your code, I can see one potential problem: you're using Sphere-to-Sphere collision checking for your player-to-terrain collisions. In my experience, S2S collisions should literally only be used between two balls, and a terrain by nature can't be a ball. If you use Sphere-to-Polygon (method 2) instead, that might fix the problem. |
| ||
-Edited-- . Nevermind, I re-read the title. :) THough some information on just what the problem is might help. |
| ||
Well thanks for the help. I'll check whether the S2S method is the issue later today. The problem I'm having is that the collision just won't work. I placed the character very high above the terrain and moved it slowly toward it. I defined a collision between their types but when the character gets to the terrain it just continue moving down through it. Even using EntityCollided won't work. EDIT: Yes thank you, the S2S was the issue! Changed to Sphere 2 Polygon and now it works. |