Was ist an dieser Colli-Abfrage falsch???
Übersicht

DödelBetreff: Was ist an dieser Colli-Abfrage falsch??? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
uuups, danke! | ||
Dödel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ä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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ä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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ? ![]() |
||
Dödel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group