Typekollision
Übersicht

![]() |
N0XBetreff: Typekollision |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Warum funktioniert meine Kollisionsabfrage nicht? Code: [AUSKLAPPEN] If KeyDown(57) Then
For e.enemy = Each enemy If EntityCollided(e\mesh,PLY) End EndIf Next EndIf Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil nur geprüft wird, wenn du die Leertaste gedrückt hälst? Der Rest vom Code wäre ziemlich praktisch... | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut, hier mal das wichtigste.
(Achja, so blöd bin ich jetzt auch nicht, dass ich nicht weiß das ich die Leertaste gedrückt halten muss ![]() Code: [AUSKLAPPEN] Type enemy
Field mesh End Type ;----------------------------------------------------------------------------------------------| ;Haupt-Teil Graphics3D 1024,768,32,2 SetBuffer BackBuffer() timer = CreateTimer(60) ;----------------------------------------------------------------------------------------------| ;3D Ressourcen Global piv = CreatePivot() Global cam = CreateCamera(piv) Global player = LoadAnimMesh("models\dwarf1.b3d") Global gegner = LoadAnimMesh("models\dwarf2.b3d") Global horse = LoadMesh("models\horse2.3ds") ;----------------------------------------------------------------------------------------------| ;Gegner For i = 0 To 1 e.enemy = New enemy e\mesh = CopyEntity(gegner) Next For o = 0 To 49 e.enemy = New enemy e\mesh = CopyEntity(horse) Next ;----------------------------------------------------------------------------------------------| ;Haupt-Schleife While Not KeyHit(1) WaitTimer(timer) initBattleSys() ;----------------------------------------------------------------------------------------------| RenderWorld() UpdateWorld() Flip 0 Wend End Function initBattleSys() For e.enemy = Each enemy If KeyDown(57) Then If EntityCollided(e\mesh,PLY) End EndIf EndIf Next End Function |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Collisions![]() ![]() Edit: Macht euch nichts draus, man kann nicht immer der erste sein ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
- Zuletzt bearbeitet von Nicdel am So, Jan 24, 2010 21:59, insgesamt einmal bearbeitet
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Collisions![]() ![]() Und PLY hat keinen Wert... €: zu spät |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
EntityType![]() meh. ich werde alt und lahm... |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
So?
Code: [AUSKLAPPEN] Const PLY=1
Type enemy Field mesh End Type ;----------------------------------------------------------------------------------------------| ;Haupt-Teil Graphics3D 1024,768,32,2 SetBuffer BackBuffer() timer = CreateTimer(60) ;----------------------------------------------------------------------------------------------| ;3D Ressourcen Global piv = CreatePivot() Global cam = CreateCamera(piv) Global player = LoadAnimMesh("models\dwarf1.b3d") Global gegner = LoadAnimMesh("models\dwarf2.b3d") Global horse = LoadMesh("models\horse2.3ds") EntityType(player,PLY) ;----------------------------------------------------------------------------------------------| ;Gegner For i = 0 To 1 e.enemy = New enemy e\mesh = CopyEntity(gegner) Next For o = 0 To 9 e.enemy = New enemy e\mesh = CopyEntity(horse) Next ;----------------------------------------------------------------------------------------------| ;Haupt-Schleife Collisions(PLY,enemy,2,2) While Not KeyHit(1) WaitTimer(timer) initBattleSys() ;----------------------------------------------------------------------------------------------| RenderWorld() UpdateWorld() Flip 0 Wend End Klappt nicht. |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei den Gegner fehlt immernoch EntityType![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nochmal geändert, klappt noch nicht. Was habe ich jetzt noch falsch?
Code: [AUSKLAPPEN] Const PLY=1,GEG=2
Type enemy Field mesh End Type ;----------------------------------------------------------------------------------------------| ;Haupt-Teil Graphics3D 1024,768,32,2 SetBuffer BackBuffer() timer = CreateTimer(60) ;----------------------------------------------------------------------------------------------| ;3D Ressourcen Global piv = CreatePivot() Global cam = CreateCamera(piv) Global player = LoadAnimMesh("models\dwarf1.b3d") Global gegner = LoadAnimMesh("models\dwarf2.b3d") Global horse = LoadMesh("models\horse2.3ds") EntityType(player,PLY) ;----------------------------------------------------------------------------------------------| ;Gegner For i = 0 To 1 e.enemy = New enemy e\mesh = CopyEntity(gegner) EntityType(e\mesh,GEG) Next For o = 0 To 9 e.enemy = New enemy e\mesh = CopyEntity(horse) Next ;----------------------------------------------------------------------------------------------| ;Haupt-Schleife Collisions(PLY,GEG,2,2) While Not KeyHit(1) WaitTimer(timer) initBattleSys() ;----------------------------------------------------------------------------------------------| RenderWorld() UpdateWorld() Flip 0 Wend End Function initBattleSys() For e.enemy = Each enemy If EntityCollided(player,GEG) End EndIf Next End Function |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Diedel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vl., dass Du nun die Gegner auf Kollision mit den Gegnern überprüfst?
Code: [AUSKLAPPEN] Function initBattleSys()
For e.enemy = Each enemy If EntityCollided(player,GEG) ; <=Da stand doch vorher noch PLY anstatt GEG End EndIf Next End Function |
||
Owned. |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähm, ne!
Wenn da Code: [AUSKLAPPEN] EntityCollided(e\mesh,GEG) stehen würde, dann würde ich Gegner auf Gegner überprüfen. (Player ist nunmal der Player ^^)
|
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Diedel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut, um es anderst auszudrücken: Dann schau deinen zuletzt geposteten Code doch bitte einmal etwas genauer an. | ||
Owned. |
- Zuletzt bearbeitet von Diedel am So, Jan 24, 2010 22:43, insgesamt einmal bearbeitet
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und warum prüfst du für jeden Gegner, ob der Spieler mit einem Gegner kollidiert?
Code: [AUSKLAPPEN] For e.enemy = Each enemy
If EntityCollided(player,GEG) Code: [AUSKLAPPEN] EntityCollided(e\mesh,PLY)
mach da doch wirklich mehr Sinn. |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, klar, geändert!
Ich stehe ja momentan im Modell. Wenn ich mich jetzt nach links bewege, dann ist dort kurz eine Kollision. (DebugLog) Wie kann ich den "Kollisionsradius" eines Modells ändern? Geht das? //EDIT: Achja, zum Testen habe ich das (wohl allen bekannte) Psionic's Dwarf Modell benutzt. |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es würde helfen, wenn du die Online Hilfe tatsächlich liest... EntityRadius![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt weiß ich echt nicht mehr weiter. Habe alles ausprobiert. (auch EntityRadius)
Ich habe den Code nochmal gekürzt. Aber so wie der jetzt ist müsste er doch eigentlich funktionieren, oder? Code: [AUSKLAPPEN] Const PLY=1,GEG=2
Type enemy Field mesh End Type ;----------------------------------------------------------------------------------------------| ;Haupt-Teil Graphics3D 1024,768,32,2 SetBuffer BackBuffer() timer = CreateTimer(60) ;----------------------------------------------------------------------------------------------| ;3D Ressourcen Global piv = CreatePivot() Global cam = CreateCamera(piv) Global player = LoadAnimMesh("models\dwarf1.b3d") Global gegner = LoadAnimMesh("models\dwarf2.b3d") EntityType(player,PLY) ;----------------------------------------------------------------------------------------------| ;Gegner e.enemy = New enemy e\mesh = CopyEntity(gegner) EntityType(e\mesh,GEG) ;----------------------------------------------------------------------------------------------| ;Haupt-Schleife Collisions(PLY,GEG,2,2) While Not KeyHit(1) WaitTimer(timer) move() initBattleSys() ;----------------------------------------------------------------------------------------------| RenderWorld() UpdateWorld() For e.enemy = Each enemy DebugLog(""+EntityCollided(e\mesh,PLY)) Next Flip 0 Wend End Function initBattleSys() For e.enemy = Each enemy If EntityCollided(e\mesh,PLY) Then End EndIf Next End Function Function move() PositionEntity piv,EntityX(player),EntityY(player),EntityZ(player) If KeyDown(17) Then MoveEntity player,0,0,1 EndIf If KeyDown(31) Then MoveEntity player,0,0,-1 EndIf If KeyDown(30) Then MoveEntity player,-1,0,0 EndIf If KeyDown(32) Then MoveEntity player,1,0,0 EndIf End Function |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] EntityCollided(player,GEG)
Der Spieler ist das sich bewegende Objekt, von dem geprüft wird, ob es auf die Gruppe "GEG" auftrifft! Edit: Und für den anderen Fall muss Collisions natürlich anders herum definiert werden: Code: [AUSKLAPPEN] Collisions(GEG,PLY,2,2)
Dann muss sich nur e\mesh bewegen: BlitzBasic: [AUSKLAPPEN] Const PLY=1,GEG=2 |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
AHH! Das hatte ich doch auch schonmal, und es klappt wieder nicht.
Es kommt einmal ganz kurz eine Kollision (bei dem Zwerg), wenn mich nach rechts bewege. Das wars aber auch! ![]() Code: [AUSKLAPPEN] Const PLY=1,GEG=2
Type enemy Field mesh End Type ;----------------------------------------------------------------------------------------------| ;Haupt-Teil Graphics3D 1024,768,32,2 SetBuffer BackBuffer() timer = CreateTimer(60) ;----------------------------------------------------------------------------------------------| ;3D Ressourcen Global piv = CreatePivot() Global cam = CreateCamera(piv) Global player = LoadAnimMesh("models\dwarf1.b3d") Global gegner = LoadMesh("models\dwarf2.3ds") EntityType(player,PLY) ;----------------------------------------------------------------------------------------------| ;Gegner e.enemy = New enemy e\mesh = CopyEntity(gegner) EntityType(e\mesh,GEG) ;----------------------------------------------------------------------------------------------| ;Haupt-Schleife Collisions(PLY,GEG,2,1) While Not KeyHit(1) WaitTimer(timer) move() initBattleSys() ;----------------------------------------------------------------------------------------------| RenderWorld() UpdateWorld() DebugLog(""+EntityCollided(player,GEG)) Flip 0 Wend End Function initBattleSys() If EntityCollided(player,GEG) Then End EndIf End Function Function move() PositionEntity piv,EntityX(player),EntityY(player),EntityZ(player) If KeyDown(17) Then MoveEntity player,0,0,1 EndIf If KeyDown(31) Then MoveEntity player,0,0,-1 EndIf If KeyDown(30) Then MoveEntity player,-1,0,0 EndIf If KeyDown(32) Then MoveEntity player,1,0,0 EndIf End Function //EDIT: Bei anderen Modellen wird die Kollision garnicht erkannt! Und mit [[MeshesIntersect()]] klappts einwandfrei. (Da das aber langsamer sein soll, lasse ich das lieber.) |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, du erstellst beide Entitys auf Position 0,0,0 ineinander. Das kann ja bloß komische Ergebnisse liefern. | ||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, alles in allem ist bei mir EntityCollide() glaube ich ziemlich verbuggt, aber jetzt funktioniert es einigermaßen. Danke. | ||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group