Was ist an dieser Colli-Abfrage falsch???

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Dödel

Betreff: Was ist an dieser Colli-Abfrage falsch???

BeitragSa, Sep 04, 2004 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
ích habe ein problem mit folgendem programm: die kollisionserkenung funzt net. was mach ich falsch? als figur habe ich die mariofigur vom blitzbeispiel genommen, den pfad müsst ihr noch ändern


Code: [AUSKLAPPEN]



Graphics3D 640,480,16,1
SetBuffer BackBuffer()



Collisions spielercol, boxcol, 2, 2

Global py
Global px
Global pz

Global player = LoadMesh("D:\Programme\Blitz 3D\Blitz3D\samples\castle\markio\mariorun.x")
PositionEntity player, 0, 1, 0
EntityType player, spielercol
EntityRadius player, 9, 9



Global cam = CreateCamera(player)
PositionEntity cam, 0, 6, -40


Global box = CreateCube()
ScaleEntity box, 5, 5, 5
PositionEntity box, 20, 5, 20
EntityType box, boxcol



Global light = CreateLight ()
RotateEntity light, 9, 0, 0

Global terrain = CreateTerrain(1024) 

 


Global Countcol



Repeat
Cls
Bewegungsabfrage()
Aktualisieren
Until KeyHit(1)




Function Bewegungsabfrage()

If KeyDown(200) Then
MoveEntity player, 0, 0, 1
EndIf

   
If KeyDown(208) Then
MoveEntity player, 0, 0, -1
EndIf


If KeyDown(205) Then
MoveEntity player, 1, 0, 0
EndIf
   
   
If KeyDown(203) Then
MoveEntity player, -1, 0, 0
EndIf



End Function


Function Aktualisieren()



UpdateWorld

   
Countcol = CountCollisions(player)
For nr = 1 To Countcol
Print "Kollision mit Objekt: " + CollisionEntity (player, nr)
Next



RenderWorld
Flip
End Function




was ist da falsch???

Dödel
 

INpac

BeitragSa, Sep 04, 2004 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Du Dödel hast vergessen den EntityTypen "boxcol" und "spielercol" davor (muss vor collisions und vor entityType) einen wert zuzuweisen..

also zB am besten per constante:

const spielercol = 123
const boxcol = 456
 

Dödel

BeitragSa, Sep 04, 2004 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
uuups, danke!
 

Dödel

BeitragSo, Sep 05, 2004 8:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich habe das jetzt eingebaut, aber noch ein problem:
irgendwie kriege ich es nicht hin, den richtigen radius anzugeben. mein spieler slidet entweder schon vor der collision oder er kann mit den armen die box berühren. was stimmt da nicht?


Code: [AUSKLAPPEN]

Graphics3D 640,480,16,1
SetBuffer BackBuffer()




Global py
Global px
Global pz


Global player = LoadMesh("D:\Programme\Blitz 3D\Blitz3D\samples\castle\markio\mariorun.x")
PositionEntity player, 0, 1, 0
EntityType player, spielercol
EntityRadius player, 9.2227, 9.44724




Global cam = CreateCamera(player)
PositionEntity cam, 0, 6, -40


Global box = CreateCube()
ScaleEntity box, 5, 5, 5
PositionEntity box, 20, 5, 20
EntityType box, boxcol
EntityBox box, 20, 5, 20, 5,5,5





Global light = CreateLight ()
RotateEntity light, 9, 0, 0

Global terrain = CreateTerrain(1024) 

 


Global Countcol

Const spielercol = 1
Const boxcol = 500




Collisions spielercol, boxcol, 2, 2


   Repeat

      Cls
      Bewegungsabfrage()
      Aktualisieren
   Until KeyHit(1)






Function Bewegungsabfrage()


   If KeyDown(200) Then
      MoveEntity player, 0, 0, 1
   EndIf

   
   If KeyDown(208) Then
      MoveEntity player, 0, 0, -1
   EndIf


   If KeyDown(205) Then
      MoveEntity player, 1, 0, 0
   EndIf
   
   
   If KeyDown(203) Then
      MoveEntity player, -1, 0, 0
   EndIf



End Function




Function Aktualisieren()


Print "x-Radius" + MeshWidth(player)/2
Print "y-Radius" + MeshHeight(player)/2
   

   UpdateWorld
   RenderWorld
   Flip
End Function



bitte helft mir!
Dödel
 

blitzblaster

BeitragMo, Sep 06, 2004 1:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm gewöhn Dir mal ab D: oder C: im Programmcode einzubinden und ich kann mir nicht vorstellen, das der Player wirklich solche coordinaten hat.
Müsste man mal die komplette Datei haben, also mit Mesh. Dann könnte mal mal schaun, wie der richtige Wert lauten muss.
 

Dödel

BeitragMo, Sep 06, 2004 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
wie oben geschrieben ist die figur aus dem castle-beispiel von blitz3d. normalerweise nehme ich currentdir, aber da ich keine eigene firgur erstellen wollte, sondern die von blitz genommen habe, habe ich den kompletten pfad angegeben.
 

blitzblaster

BeitragMo, Sep 06, 2004 23:49
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm trotzdem kann man das weglassen, indem man den Mesh kopiert und dann in den eigenen Ordner wie z.B. Mesh kopiert und dann im Code dann nurnoch loadanimesh("mesh\blabla.b3d") steht..
 

Dödel

BeitragDi, Sep 07, 2004 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
aber wozu?? sobald ich eine eigene figur habe, brauch ich kein C:... aber momentan habe ich eben diese mariofigur und diese in mein spieleverzeichnis zu kopieren würde mir nicht helfen und unnötig speicherplatz rauben.
 

blitzblaster

BeitragDi, Sep 07, 2004 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, wollte es ja auch nur gesagt haben. Wenn Du mal ein Spiel machen willst und irgendein Pfad so in Deinen Code schreibst, dann hat der jenige der es sich dowloadet dann ein Problem. Das Programm startet dann nicht, weil er nicht die Daten so angeortnet auf seiner Platte hat wie Du. Und das mit dem Speicherverbrauch ist ja wohl ein Witz, oder ? Rolling Eyes
 

Dödel

BeitragMi, Sep 08, 2004 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiß, eine figur geht ja noch und auch zwei zu koperieren ist noch nichts, aber all das leppert sich. wer den byte nicht ehrt ist den megabyte nicht wert. hast du denn eine lösung für das problem? leider weiß ich nur wenig über meshheight und -width. da die mariofigur ein animiertes objekt ist, könte ich mir z.B. auch vorstellen, dass die breite und höhe des größten frames angegeben wird, aber eigentlich lade ich das mesh doch gar nicht animiert... woran könnte es sonst liegen? gibt es eigentlich auch befehle, die dir die kleinste x-koordinate und die größte x-koordinate anzeigen können, die von einem objekt berührt werden? dann könnte man durch die differenz das ganze evtl. genauer machen...

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group