Objeckte einsammeln
Übersicht

![]() |
SuratBetreff: Objeckte einsammeln |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich programmiere gerade an einer 3d-Schule. Jetzt soll man aber auch Objeckte einsammeln. Wenn man bestimmte Objeckte berührt, dann soll das Programm beenden. In 2d ist das ja ganz einfach: if imagescollide then.... aber in 3d funktioniert das irgendwie nicht: =( if collisions 1,2,2,1 then end (als beispiel) wie mache ich das denn? Ich bin für jede Hilfe dankbar! ![]() |
||
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)
AZUON-Beyond the dark life (2%) SOULS OF DESTINY (23%) |
![]() |
Fuchsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
; Erstmal für den Gegenstand, den du einsammelst, einen Entitytype setzten.
Code: [AUSKLAPPEN] entitytype objekt,1 ; Dann Collisions: Code: [AUSKLAPPEN] collisions player_type,pbjekt_type ; In der Hauptschleife: Code: [AUSKLAPPEN] if entitycollided(player, objekt_type) then sammle Objekt auf. endif |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
du scheinst ql:collisions nicht ansatzweise richtig verstanden zu haben in seiner funktionsweise ![]() was ich dir raten würde, ist ql:entitydistance . damit kannst du den abstand zwischen zwei objekten ermitteln. zum beispiel zwischen dem player und dem item, das einsammelbar ist. also könntest du sagen if entitydistance(player,item) < 10 then end |
||
MrKeks.net |
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kollisionsbefehle sind ausserdem so ziemlich die langsamsten überhaupt und sollten auch am besten möglichst vermieden werden, wenn man sie nicht wirklich braucht.
Benutze am besten Types für die Einsammel-Objekte und, wie gesagt, EntityDistance: Code: [AUSKLAPPEN] Type TGoodie Field goodie_type% Field Entity% Field x# Field y# Field z# End Type goodie_type beschreibt, um was für ein Objekt-Typ es sich handelt (Beispiel: 1 = Powerschuss, 2 = Laser, 3 = Medipack usw.) In x, y, z speicherst du die Position des Objekts (so kannst du beim Levelstart alle Objekte an den entsprechenden Stellen setzen -oder statt EntityDistance auch einfach die x/y/z-Koordinaten der Objekte und des Players vergleichen) und Entity enthält das Handle des jeweiligen Objekt-Meshes. Während dem Spiel dann: Code: [AUSKLAPPEN] ; GOODIES GESAMMELT?
For Goodie.TGoodie = Each TGoodie ; DIE DISTANZ EVENTUELL ANPASSEN: If EntityDistance(Entity_Player, Goodie\Entity) < 1.0 Then ; EINGESAMMELT! WELCHES EXTRA? Select Goodie\goodie_type CASE 1 ... CASE 2 ... CASE 3 ... End Select ; DIESES GOODIE ENTFERNEN FreeEntity Goodie\Entity : Delete Goodie : Exit End If Next |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Surat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh, vielen Dank an alle!
Genau das, was ich suche! ![]() |
||
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)
AZUON-Beyond the dark life (2%) SOULS OF DESTINY (23%) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group