Riesiges Collisions-Problem!!!

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

AFRO

Betreff: Riesiges Collisions-Problem!!!

BeitragSa, Okt 20, 2007 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi erstmal^^
Ich hab ein riesiges Problem mit meinen Collisionen (zumindest denke ich dass es daran liegt), von dem ich nicht einmal gedacht habe, dass es so etwas geben könnte. Wenn ich auf der seite der Bierkästenreihe in meinem Level stehe, wird der Schuss nicht wie normal an allen anderen Stellen im Level einfach beim Spieler erstellt, sonder vom 0 punkt aus (0,0,0) und fliegt von dort aus aber wenigstens in die richtige Richtung^^. Wie gesagt denke ich es liegt an den Collisionen, bzw der Anordnung meiner Befehle und ich poste einfach mal den kompletten post und entlschuldige mich an dieser Stelle schon einmal dafür, doch weiß ich nicht im Geringsten wo das Problem stecken könnte.

Code: [AUSKLAPPEN]
Graphics3D 1024, 768, 16, 1
SetBuffer BackBuffer ()

Const Player_Col = 1
Const Fence_Col = 2
Const House_Col = 7
Const Assault_Bullet_Col = 10

;------------------------------------------

Global Pivot = CreatePivot ()
PositionEntity Pivot, 0, 18, -30
EntityType Pivot, Player_Col
EntityRadius Pivot, 10

Global Player = LoadAnimMesh ("Graphics\German\Assault_Animated.b3d")
ScaleEntity Player, 0.2, 0.2, 0.2
PositionEntity Player, 0, 18,-30
EntityRadius Player, 10
EntityParent Player, Pivot
anim_player_reload=LoadAnimSeq(player,"graphics\german\assault_animated.b3d")

Global Camera = CreateCamera (Player)
CameraRange camera, 1, 100000
PositionEntity Camera, 0, 28, -10 ;-10         

Light = CreateLight ()

;------------------------------------------

Global Bierkasten = LoadMesh ("Graphics\Level_1\Bierkasten.b3d")
HideEntity Bierkasten
RotateEntity Bierkasten, 270, 0 ,0
ScaleEntity Bierkasten, 0.5, 0.5, 0.5
EntityType Bierkasten, House_Col

Fence_1 = LoadMesh ("Graphics\Level_1\mauer.3ds")
PositionEntity Fence_1, -80, 28, 300
ScaleEntity Fence_1, 20, 3, 50
RotateEntity Fence_1, 90, 0, 0
EntityType Fence_1, House_Col

Fence_2 = CopyEntity (Fence_1)
PositionEntity Fence_2, -80, 28, -400

Fence_3 = CopyEntity (Fence_1)
RotateEntity Fence_3, 90, 90, 0
PositionEntity Fence_3, 200, 28, 0

Fence_4 = CopyEntity (Fence_3)
PositionEntity Fence_4,-400, 28, 0

Global Sky = CreateSphere (15)
Global Sky_Textur = LoadTexture ("Graphics\sky_Texture.bmp")
EntityTexture Sky, Sky_Textur
ScaleEntity Sky, 10000, 10000, 10000
FlipMesh Sky
EntityOrder sky, 1
Global Fadenkreuz = LoadImage ("Graphics\Fadenkreuz.bmp")
MaskImage Fadenkreuz, 255, 0, 255

Global Terrain = LoadMesh ("Graphics\Terrain\Ground.3ds")
PositionEntity Terrain, 0, 0, 0
ScaleEntity Terrain, 100, 100, 100
EntityType Terrain, Terrain_Col

Global Assault_Kugel = CreateSphere (10)
PositionEntity Assault_Kugel, 0, -20, 100
ScaleEntity Assault_Kugel, 0.5, 0.5, 0.5

;------------------------------------------

Global Sound_M4 = LoadSound ("sounds\assault.wav")
Global Sound_Pump = LoadSound ("sounds\pumpgun.wav")
Global Step_1 = LoadSound ("sounds\step.wav")
Global Step_2 = LoadSound ("sounds\step_2.wav")

Global SchussCounter = 7
Global WalkCounter = 20
Global Zustand = 0
Global Schuss_Verbleib = 30
Global Magazin_Counter = 3
Global Lade_Counter = 40

Type Schuss
Field x
Field y
Field z
Field Mesh
End Type

Type Bierkasten
Field x
Field y
Field z
Field mesh
End Type

;------------------------------------------

Bierkaesten   ()
Bierkaesten_2 ()
Bierkaesten_3 ()

;Collisions Assault_Bullet_Col, House_Col, 2, 1

While Not KeyHit (1)


UpdateWorld

Movement ()

RenderWorld

   MoveMouse (GraphicsWidth()/2) - 35,GraphicsHeight()/2 -30   
   
   If EntityPitch(Player) > 70 Then RotateEntity Player, 70,EntityYaw(Player),0
   If EntityPitch(Player) <-50 Then RotateEntity Player,-50,EntityYaw(Player),0
   
   If EntityY (Pivot) < 18 Then MoveEntity Pivot, 0, 1, 0
   If EntityY (Pivot) > 18 Then MoveEntity Pivot, 0,-1, 0
   
   Text 100, 600, Magazin_Counter
   Text 100, 700, Schuss_Verbleib
   
Collisions Player_Col, Terrain_Col, 2, 2
Collisions Player_Col, House_Col, 2, 2

Collisions Assault_Bullet_Col, House_Col, 2, 1

Flip
Wend
End

Function Bierkaesten ()

   For a = 0 To 7

   B.Bierkasten = New Bierkasten
   B\Mesh = CopyEntity (Bierkasten)
   b\x = 10 * a*1.1
   b\y = 0
   B\z = -100
   PositionEntity b\Mesh, b\x, b\y, b\z
   
   Next
   
End Function

Function Bierkaesten_2 ()

   For a = 0 To 6

   B.Bierkasten = New Bierkasten
   B\Mesh = CopyEntity (Bierkasten)
   b\x = 10 * a *1.1
   b\y = 5
   B\z = -100
   PositionEntity b\Mesh, b\x, b\y, b\z
   
   Next
   
End Function

Function Bierkaesten_3 ()

   For a = 0 To 6

   B.Bierkasten = New Bierkasten
   B\Mesh = CopyEntity (Bierkasten)
   b\x = 10 * a *1.1
   b\y = 10
   B\z = -100
   PositionEntity b\Mesh, b\x, b\y, b\z
   
   Next
   
End Function

Function Movement ()

If KeyDown (17) Then
MoveEntity Pivot, 0, 0, 2
WalkCounter = Walkcounter - 1
If WalkCounter = 0 Then
WalkCounter = 20
PlaySound Step_1
EndIf
ElseIf KeyDown (31) Then
MoveEntity Pivot, 0, 0, -2
WalkCounter = WalkCounter - 1
If WalkCounter = 0 Then
WalkCounter = 20
PlaySound Step_1
EndIf
ElseIf KeyDown (30) Then
MoveEntity Pivot, -2, 0, 0
WalkCounter = WalkCounter - 1
If WalkCounter = 0 Then
WalkCounter = 20
PlaySound Step_2
EndIf
ElseIf KeyDown (32) Then
MoveEntity Pivot, 2, 0, 0
WalkCounter = WalkCounter - 1
If WalkCounter = 0 Then
WalkCounter = 20
PlaySound Step_2
EndIf
EndIf

If Schuss_Verbleib = 0 Then
   
   If Magazin_Counter > 0 Then
   lade_counter = lade_counter - 1
   Animate player,3, 0.5,anim_player_reload,1
      
      If lade_counter = 0 Then
      
      Magazin_counter = Magazin_counter - 1
      lade_counter = 40
      Schuss_verbleib = 30
      
      EndIf
      
   EndIf
   
EndIf

If MouseDown (1) Then
If Schuss_Verbleib > 0 Then
If Not Animating (Player)
SchussCounter = SchussCounter -1
If SchussCounter = 0 Then
Schuss_Verbleib = Schuss_Verbleib - 1      
PlaySound Sound_M4
SchussCounter = 7
s.Schuss = New Schuss
s\Mesh = CopyEntity (Assault_Kugel)
RotateEntity s\Mesh,EntityPitch(Camera,1),EntityYaw(Camera,1),EntityRoll(Camera,1),1
s\x = EntityX (pivot)
s\y = EntityY (pivot) + 6
s\z = EntityZ (pivot)
EntityType s\Mesh, Assault_Bullet_Col

PositionEntity s\Mesh, s\x, s\y, s\z
EndIf
EndIf
EndIf
EndIf

For s.Schuss = Each Schuss
MoveEntity s\Mesh, 0, 0, 10
Next

TurnEntity Player, MouseYSpeed() *0.1, 0, 0
TurnEntity Pivot, 0, -MouseXSpeed()*0.1, 0

End Function


Ich hoffe mir kann jemand helfen
Mfg AFRO
!!!BF HARDCORE KILLER!!!
!!!ACHTUNG KILLERSPIELZOCKER!!!

Xeres

Moderator

BeitragSa, Okt 20, 2007 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein bisschen Codeeinrückung wäre vielleicht ganz angebracht...
so wie ich das übersehe würde ich das so machen:
Code: [AUSKLAPPEN]
s.Schuss = New Schuss
s\Mesh = CopyEntity (Assault_Kugel)

HideEntity s\Mesh

RotateEntity s\Mesh,EntityPitch(Camera,1),EntityYaw(Camera,1),EntityRoll(Camera,1),1
s\x = EntityX (pivot)
s\y = EntityY (pivot) + 6
s\z = EntityZ (pivot)
EntityType s\Mesh, Assault_Bullet_Col
PositionEntity s\Mesh, s\x, s\y, s\z

ShowEntity s\Mesh
Mit Hide und Show die Kollision umgehen bis es am richtigen Platz ist.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

AFRO

BeitragSa, Okt 20, 2007 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ah des is natürlich hilfreich ich werds mal ausprobiern sry wegen der Unübersichtlichkeit. Gibts eigentlich noch eine andere Möglichkeit, weil ich die Kugeln auch fliegen sehen möchte, weil es ein Spiel wird, bei dem es um Softairs (=Softguns/Airsoft) geht?
!!!BF HARDCORE KILLER!!!
!!!ACHTUNG KILLERSPIELZOCKER!!!

Xeres

Moderator

BeitragSa, Okt 20, 2007 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Na darum wird nach der Positionierung der Mesh ja auch wieder angezeigt, er soll bloß nicht auf dem Weg dorthin mit irgendwas zusammenstoßen. Danach ist er wieder sichtbar und Kollidiert wieder wie gehabt.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

AFRO

BeitragSa, Okt 20, 2007 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah! sorry hab das ShowEntity dummerweise übersehen, deswegen hat es mich auch verwundert weil meinen Erkenntnissen nach ein verstecktes Objekt nicht kollidiert^^. Jetz funzts astrein danke für die schnelle und wirklich hilfreiche hilfe^^. Jetzt steht endlich meine Grundengine.
Xeres, du bist mein persönlicher Held, auch wenn sich das komisch und übertriegen anhört aber endlich nimmt mein Game Form an.

THX THX THX alta
AFRO
!!!BF HARDCORE KILLER!!!
!!!ACHTUNG KILLERSPIELZOCKER!!!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group