Kollisionsproblem
Übersicht

JoschaBetreff: Kollisionsproblem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo bin neu hier hab ein grosses Problem mit der Kollisionsabfrage zwischen der Map und dem Geschoss. Kann mir jemand helfen ![]() Hier der Code: Code: [AUSKLAPPEN] Graphics3D 1600,1200,32,1
Const playercol=1 Const liftcol=1 Const teracol=2 Const meshcol=2 Const panzercol=1 Const panzer1col=1 Const geschoscol=1 Collisions playercol,meshcol,2,2 Global player=CreatePivot() PositionEntity player,0,1,-1 EntityRadius player,.6 EntityType player,playercol Global lift=LoadMesh("Lift.3ds") EntityFX lift,liftcol EntityType lift,2 Global timer=0 Global tera=LoadTerrain("heightmap_2561.bmp") PositionEntity tera,61,78,-35 ScaleEntity tera,1,30,1 teratex=LoadTexture("MossyGround.bmp") ScaleTexture teratex,4,4 EntityTexture tera,teratex EntityFX tera,1 EntityType tera,teracol Global camera=CreateCamera( player ) CameraRange camera,.1,200 gun=LoadMesh("pistol1.x", camera) ScaleMesh gun,0.1,0.1,0.1 TurnEntity gun ,0,180,0 PositionEntity gun ,0.3,-0.3,0.3 EntityColor gun,50,50,50 Global geschos=LoadMesh ("Geschoss.3ds",camera) PositionEntity geschos,0,0,0 visier=LoadMesh("Vis3d.3ds",camera) PositionEntity visier, 0,0,1 TurnEntity visier, 90,0,0 EntityColor visier, 0,0,0 Global light=CreateLight() LightColor light,32,32,32 TurnEntity light,45,-45,0 Global mesh=LoadMesh("map.x") EntityFX mesh,1 EntityType mesh,meshcol Global ey#=EntityY(player) ;;;; ;;Hauptschleife ;;;;; While Not KeyHit(1) If KeyHit(17) wire=1-wire WireFrame wire EndIf yv#=EntityY(player)-ey ey=EntityY(player) If KeyDown(57) yv=.1 MoveEntity player,0,yv-.005,0 lift() move() UpdateWorld RenderWorld timer=timer+1 If timer=7600 Then timer=0 shoot() MoveEntity geschos ,0,0,2 Flip Wend End ;;;; ;;Functionen ;;;; Function move() If KeyDown(203) TurnEntity player,0,2,0 If KeyDown(205) TurnEntity player,0,-2,0 If KeyDown(200) MoveEntity player,0,0,0.05 If KeyDown(208) MoveEntity player,0,0,-0.05 If KeyDown(30) TurnEntity camera,-2,0,0 If KeyDown(44) TurnEntity camera,+2,0,0 End Function Function shoot() If KeyHit(34) Then PositionEntity geschos, 0.32,-0.15,0.2 End Function Function lift() If timer=1 Then PositionEntity lift,-31,74,-16 MoveEntity lift,0,-0.005,0 End Function Vieleicht kann mir jemand Helfen. Ich bedanke mich schon im Voraus um eure Bemühungen. ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du nicht schreibst was denn das Problem ist, wird's schwierig dir zu helfen...
Was ich dir sagen kann: Code: [AUSKLAPPEN] timer=timer+1
If timer=7600 Then timer=0 shoot() MoveEntity geschos ,0,0,2 1. Der Timer ist so wie er da steht kein wirklicher Timer, da er von der Geschwindigkeit des Rechners abhängig ist. Eine konstruktion mit millisecs ![]() 2. Wenn du keinen besonders langsamen Rechner hast, ist eine Geschwindigkeit von 2 Einheiten / Schleifendurchlauf verdammt groß, zu testzwecken würde ich kleinere Werte verwenden. 3. Du solltest Flip 0 und einen Timer verwenden. Siehe hier für mehr infos. |
||
- Zuletzt bearbeitet von Xeres am Mi, Jul 23, 2008 12:56, insgesamt einmal bearbeitet
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich sehe auch noch nicht dein Problem, du hast ja auch nur einfach Code hingeklatscht. Aber da ist noch kein ernsthafter Geschoss-Code drin: Schon mal überlegt, wie du mehrere Schüsse umsetzt? Und was dich vielleicht auch interessiert ist EntityCollided![]() |
||
MrKeks.net |
Joscha |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Problem ist das die Kugel durch die Wand geht und ungebremst weiter geht. Ich hab mir das so Gedacht das wenn die Kugel mit der Wand in Berührung kommt das dann die Kugel an einen anderen Ort versetzt wird.
Also: wenn zwei Objekte Kollidieren dann... so hatte ich mir das überlegt. |
||
![]() |
Meoqan |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi!
hab mich mal hingesetzt und aus einem hilfe-beispiel vielecht das gemacht was du woltest: !achtung: code nicht perfect aber funktionsfähig! Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,15,0 EntityType camera,1 EntityRadius camera,2 light=CreateLight() RotateEntity light,45,0,0 cube=CreateCube() EntityType cube,2 EntityColor cube,0,100,0 PositionEntity cube,0,-5,0 ScaleEntity cube,10,10,10 cylinder=CreateCylinder(32) EntityType cylinder,2 EntityColor cylinder,255,0,0 PositionEntity cylinder,0,7,0 ScaleEntity cylinder,2,2,2 Type bullet Field mesh,range End Type Global bullet.bullet While Not KeyDown(1) msx=-MouseXSpeed() msy=MouseYSpeed() TurnEntity camera,msy,msx,0 RotateEntity camera,EntityPitch#(camera),EntityYaw#(camera),0 x#=EntityX#(camera) y#=EntityY#(camera) z#=EntityZ#(camera) If KeyDown(203)=1 Then MoveEntity camera,-0.1,0,0 If KeyDown(205)=1 Then MoveEntity camera,0.1,0,0 If KeyDown(208)=1 Then MoveEntity camera,0,0,-0.1 If KeyDown(200)=1 Then MoveEntity camera,0,0,0.1 Collisions 1,2,2,3 UpdateWorld PositionEntity camera,EntityX#(camera),EntityY#(camera)-0.1,EntityZ#(camera) Collisions 1,2,2,3 UpdateWorld If MouseHit(1) Then create_shot(EntityX#(camera),EntityY#(camera),EntityZ#(camera),EntityPitch#(camera),EntityYaw#(camera),EntityRoll#(camera)) update_shot() RenderWorld col=CountCollisions(camera) Text 0,0,"Kollision(en):" Text 300,0,"1. Kollision mit:"+EntityCollided(camera,2) For i=1 To col Text 000,i*20,"Entity="+CollisionEntity(camera,i) Text 150,i*20,"Surface="+CollisionSurface(camera,i) Text 300,i*20,"Triangle="+CollisionTriangle(camera,i) Next Flip Wend End Function create_shot(x#,y#,z#,pitch#,yaw#,roll#) bullet = New bullet bullet\mesh = CreateSphere(16) ScaleEntity bullet\mesh,0.1,0.1,0.1 PositionEntity bullet\mesh,x#,y#,z# RotateEntity bullet\mesh,pitch#,yaw#,roll# EntityType bullet\mesh,3 EntityRadius bullet\mesh,0.1 bullet\range=150 End Function Function update_shot() For bullet = Each bullet del=False MoveEntity bullet\mesh,0,0,0.2 Collisions 3,2,2,1 UpdateWorld If CountCollisions(bullet\mesh) >0 Then cub=CreateCube() ScaleEntity cub,0.05,0.05,0.05 PositionEntity cub,EntityX#(bullet\mesh),EntityY#(bullet\mesh),EntityZ#(bullet\mesh) del = True EndIf bullet\range=bullet\range-1 If bullet\range=0 Then del = True If del Then FreeEntity bullet\mesh Delete bullet EndIf Next End Function |
||
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich! |
Joscha |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen dank genau das wollte ich wissen ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group