Abfragen, welches Objekt mit Objekt "A" kollidiert

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

#Reaper

Newsposter

Betreff: Abfragen, welches Objekt mit Objekt "A" kollidiert

BeitragSa, März 05, 2005 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Eigentlich sagt meine überschrift ja schon alles aus.. Wink
Also:
Ich habe ein Objekt, und will wissen, wenn es kollidiert, mit welchem objekt es kollidiert...
ich kenne keine fuktion dazu.. wie geht das den?
Smile


MfG
#Reaper
 

FBI-blitz

BeitragSa, März 05, 2005 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
collisions
countcollisions
entitycollide
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

#Reaper

Newsposter

BeitragSa, März 05, 2005 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
hi..
nene.. ich muss wissen, mit welchem objekt das obj. "A" kollidierte..

Wink

MfG
#Reaper
 

FBI-blitz

BeitragSa, März 05, 2005 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
collisionentity

...
ODer meinst du kollidierte (Vergangenheit)
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

#Reaper

Newsposter

BeitragSa, März 05, 2005 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
njoa.. ich versteh das nicht ganz..
bei welchem objekt muss ich denn countcollision einsetzten?

ohje..^^
 

FBI-blitz

BeitragSa, März 05, 2005 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm.. schau dir mal das Beispiel in der OH an!
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

#Reaper

Newsposter

BeitragSa, März 05, 2005 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ich versuchs gerade..^^

kannst du mir etwas beim logischem denken helfen?
^^

biste noch on?
icq?
 

FBI-blitz

BeitragSa, März 05, 2005 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab kein ICQ! Aber ich will versuchen, ein kleines Tutorial zu schreiben! Ich schicks dir Morgen per Mail zu!
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

#Reaper

Newsposter

BeitragSa, März 05, 2005 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
oh.. danke! Smile

ich progge gerade ein 3d game.. und check das auch net so richtig, wie ich das machen soll, wie der abfragt, ob ein "schuss" mit einem "spieler" kollidierte..^^


MfG
#Reaper
 

ke^kx

BeitragSa, März 05, 2005 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist eigentlich egal, ob du testes, ob der Spieler mit dem Schuß kolliediert oder umgekehrt, aber es ist sinnvoller zu testen, ob der Schuss mit irgendetwas anderem collidiert.

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM

Seoman

BeitragSa, März 05, 2005 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst auch beides machen.
Beim Schuss, damit du weißst, wann er stoppen muss (weil er z.B. durch etwas durchschießt), oder wo er gerade einen Brandfleck verursacht und beim Spieler "Wenn Kollision mit Schuss, dann Lep =Lep-10" "Wenn Kollision mit Lava, dann LEP = LEP -30"

mfg
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink
 

#Reaper

Newsposter

BeitragSa, März 05, 2005 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi! Smile

njoa... mm.. ist so kompliziert.. irgendwie.. alles.. da ich jeweils beidesmal Arrays durchfortsen muss...also die funktion..

FBI-blitz war so net, und hat mir ein Toturial geschrieben.. ich habe ihn mal gefragt.. da es wohl jetzt eher ein problem meines denkens ist... Rolling Eyes


MfG
#Reaper
Smile

Seoman

BeitragSa, März 05, 2005 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
#Reaper hat Folgendes geschrieben:
Hi! Smile
...da ich jeweils beidesmal Arrays durchfortsen muss...also die funktion..


Wieso?


mfg
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink
 

#Reaper

Newsposter

BeitragSo, März 06, 2005 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
äm..^^

Die "Schüsse" und die Spieler werden in einem "Type" gespeichert.. Smile
Deshalb halt.. und ich kenn mich noch nicht ganz so damit aus, mit "Type".. Wink


MfG
#Reaper

Seoman

BeitragSo, März 06, 2005 12:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Lass die "" um Wörter wie Type, Spieler oder Schuss ruhig weg... Sonst klingst du fast wie ein Bot Ich verstehe die Eingabe "Type" nicht. Bitte versuchen sie eien anderen Befehl...

Zitat:
ich kenn mich noch nicht so ganz damit aus


Das sollte später nicht so das Problem sein. Wenn man einmal gewisse Grundlegende Dinge gemacht hat (wie z.B. das Suchen eines bestimmten Types), kann man sie später in der Regel einfach immer wieder auf die gleiche Art und Weise anwenden.


mfg
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink
 

#Reaper

Newsposter

BeitragSo, März 06, 2005 12:17
Antworten mit Zitat
Benutzer-Profile anzeigen
naja..Very Happy..vll kannst du mir ja etwas beim logischem denken helfen.. Rolling Eyes

hier ein ausschnitt aus ner mail an FBI, welcher wohl nicht da ist.. :-/
(@FBI: sry, ich kann net warten, mir ist langweilig..^^)


Zitat:
Ich schreibe ein kleineres Multiplayer Game.. bzw: Soll es mal werden..Wink

Nun folgendes:

Ich habe mehrere "Geschosse" welche in einem "Type" abgespeichert werden...
Genau so, wie die Spieler, auch in einem "Type"...
Nun bin ich mir zum einem nicht sicher, ob ich abfragen soll, ob das "Geschoss" (z.b. Nr.1) abgefragt werden soll, ob es mit einem spieler kollidiert ist,
oder ob ich fragen soll, ob ein "Spieler mit dem "Geschoss" kollidiert ist...
Ich hab jetzt wahrscheinlich das 2. gemacht... ;D

Ich habe einmal die Funktion "UpdateShots()" und noch die 2te, um welche es eigentlich geht "checkDamage()"


UpdateShots() (schon mit cheackDamage() verbunden, is so einfacher Wink ):

Code: [AUSKLAPPEN]
Function UpdateShots()

For Shot.Shots=Each Shots

If Shot<>Null


MoveEntity Shot\Model,0,0,Shot\Speed

Shot\Timer=Shot\Timer+50

Shot\del=0


For Players.Players=Each Players

If Players<>Null Then


Players\countcoll = CountCollisions(Players\ShipModel)


For index=1 To Players\countcoll


Text x/2,y/2,"Entity="+CollisionEntity(spaceship,index)

If EntityCollided(CollisionEntity(spaceship,index),1) Then

Shot\del = 0

EndIf


Next



EndIf

Next



If Shot\Timer>firefar

FreeEntity Shot\Model

Shot\del = 1

EndIf


If Shot\del=1 Then Delete Shot Fired=Fired-1

EndIf

Next

End Function



--------------------------------------------------------------------------------


Code: [AUSKLAPPEN]
ckeckDamage():
For Players.Players=Each Players

If Players<>Null Then


Players\countcoll = CountCollisions(Players\ShipModel)


For index=1 To Players\countcoll


Text x/2,y/2,"Entity="+CollisionEntity(spaceship,index)

If EntityCollided(CollisionEntity(spaceship,index),1) Then

Shot\del = 0

EndIf

Next



EndIf

Next





--------------------------------------------------------------------------------



Nun mein problem, welches eher ein Logisches oder Verständniss problem ist:
Wie mach ich das nun, das der das "Geschoss" nach der collision mit einem schiff verschwindet (ok, weis ich ja eigentlich fast), und:
wie tue ich dem getroffenem schiff Damage im "Type" hinzu?
ääm... naja.. das weis ich ja eigentlich.. hab nur probleme, wie ich weis, welches schiff das war... und halt so weiter..
mit den ganzen abfragen check ich net...

Ich hoffe, ich konnte mein problem jetzt wenigstens etwas beschreiben... Very Happy Wink



MfG
#Reaper
Smile


PS: hier nochmals die Type-felder:

Code: [AUSKLAPPEN]
;Create Arrays
Type Shots
 Field x,y,z     ;position in 3d world
 Field Model     ;Shot Model
 Field Timer     ;Shot Timer
 Field Speed
 Field del
End Type


;Players
Type Players
 Field x,y,z
 Field ShipModel
 Field Nick
 Field Damage

 Field countcoll
 Field Speed
End Type
 

#Reaper

Newsposter

BeitragSo, März 06, 2005 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
vergessts, ich versuchs jetzt anderst mit den spielern..^^


noch ne frage: wie kann man z.b., wenn man eine neue variable erstellt, noch eine zahl an die variable dranhängen?
also z.b...
Player 1
Player 2
...
das dann immer noch eine zahl dahinter gehangen wird, geht das?

MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

#Reaper

Newsposter

BeitragSo, März 06, 2005 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok..ich hab jetzt folgendes gemacht:

Code: [AUSKLAPPEN]

;SpaceShip
Global spaceship = LoadMesh("...")
EntityRadius spaceship,10000
EntityType spaceship,type_sphere
EntityParent camera1,spaceship,1
EntityParent camera2,spaceship,1


;Laiserschuss laden
Global flam = CreateSphere(4)
EntityRadius flam,450
EntityType flam,1
ScaleEntity flam,50,50,450
EntityColor flam,125,0,0
EntityBlend flam,1
EntityFX flam,1

HideEntity flam


Dim Player1(4)         ;Player
Player1(1) = False
Player1(2) = 0
Player1(3) = 0
Player1(4) = 0         ;Ende Player


Function UpdateShots()
    For Shot.Shots=Each Shots
     If Shot<>Null
   
      MoveEntity Shot\Model,0,0,Shot\Speed
      Shot\Timer=Shot\Timer+50
      Shot\del=0
   
      If EntityCollided(Shot\Model,1) Then
      
         Shot\del = 1
         coll = CollisionEntity(Player1(1),1)
         
         If coll=Player1(1) Then
            Player1(3)=Player1(3)+10
         ElseIf coll=Player2(1) Then
            Player2(3)=Player2(3)+10
         ElseIf coll=Player3(1) Then
            Player3(3)=Player3(3)+10
         ElseIf coll=Player4(1) Then
            Player4(3)=Player4(3)+10
         Else
            meldung$="Kein Schiff getroffen!"
         EndIf

      Else
         meldung$="Nein"
      EndIf
         

   
   
      If Shot\Timer>firefar
           FreeEntity Shot\Model
          Shot\del = 1
      EndIf   
   
      If Shot\del=1 Then
      Delete Shot 
      Fired=Fired-1
      EndIf
   
     EndIf
    Next
End Function


Kurz und knapp:
es kommt keine fehler meldung,und es passiert nichts, was es sollte:
-Geschoss löschen
-Vom Player1 Damage dazusetzten

er kommt nur bis zur abfrage, ob das geschoss ( "Shot\Model" ) mit einem objekt collidierte, er meint aber immer nein, was nicht stimmt..


ich weis nicht mehr weiter Sad


MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

ke^kx

BeitragSo, März 06, 2005 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit types (siehe handel und object) oder mit Dim-Feldern. Zu beidem findest du Infos in der OH oder im Forum (suchen^^).

Jriki

[Edit]
Bezog sich auf deinen vorherigen Beitrag, ich schau mir den Code mal an.
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

#Reaper

Newsposter

BeitragMo, März 07, 2005 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
weis niemand was?
Sad


MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group