(Kollisionsabfrage) Auf Gegner Fallen dann Kollision

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Avantasia

Betreff: (Kollisionsabfrage) Auf Gegner Fallen dann Kollision

BeitragSo, Apr 30, 2006 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Ich bin neu hier und somit bin ich auch ein Anfänger in sachen
BBlitz Programmieren

Mein erstes Projekt was ich anfangen will ist es ein Jump`n Run
zu programmieren

Jedoch habe ich nun ein Problem
Ich möchte egrne eine Kollisionsabfrage machen aber die soll folgendermassen gehen

Wenn mein Player auf den Gegner von oben her drauffällt ( draufspringt
wie bei mario)
sol der gegner "tot" sein
andernfalls soll der Player "tot" sein


Was ich bisher habe ist das mein Player die Kollision mit dem gegner
( beides bilder ) erkennt

Code: [AUSKLAPPEN]

For info.Monster = Each Monster
If ImagesCollide(Player, Player_pos_x + scroll_screen_x, Player_pos_y+16 + scroll_screen_y, 0, Enemy1, info\Enemy1_pos_x, info\Enemy1_pos_y, 0) Then
         Text 200,200, "VERLOREN"
         EndIf   


Jedoch bin ich nun überfragt und weiss nicht wie ich das schreiben soll

Mich würde es freuen wenn ihr mir nen Tipp geben könnt wie man sowas bewerkstelligen kann und /oder wenn ihr noch mher code braucht kann ich den noch posten

Avantasia

Christoph

Betreff: Nichts ohne die Kollision

BeitragSo, Apr 30, 2006 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier es doch einfach mit Teilabfragen der Kollision.
(????)
Ganz leicht, was ist der Unterschied zwischen dem Gegnertotmachen und
dem Spielertotmachen?
-->Der Gegner ist tot, wenn der untere Teil der Spielfigur mit ihm in
Berührung kommt
-->Die Spielfigur ist tot, wenn der rechte oder linke Teil mit dem Gegner in
Berührung kommt

d.h. das du mit Imagerectcollide() eine Colli machen musst.

zuerst auf die linke und rechte Seite dann auf die untere.

-->Falls die untere Seite...,dann Gegner tot
-->Falls die rechte/linke Seite...,dann Spieler tot

Bye Very Happy

garret

BeitragSo, Apr 30, 2006 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde zuerst das Springen realisieren, dann hast du schon mal die Variable "Sprung" (oder so ähnlich) und kannst abfragen, ob die Figur überhaupt von oben kommt. Also:

Wenn (Sprung = "Wiederrunterkommen") Und ImagesCollide(Gegner, Spieler) Und (SpielerY<GegnerY) Dann Lösche Gegner

... muss sich die gegnerische Figur ja unter der Spielerfigur befinden. Wäre jedenfalls mein Ansatz. Vielleicht kannst du auch auf die Funktionen verzichten und überprüfst einen Zusammenstoß anhand der Koordinaten:

Wenn (Sprung = "Wiederrunterkommen") Und (SpielerY+Spielerbildhöhe>=GegnerY) Und (SpielerX+Spielerbildbreite>=GegnerX) Und (SpielerX<=GegnerX+Gegnerbildbreite) Dann Lösche Gegner

Das ersetzt dann eine Rechteckkollision.

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Mai 01, 2006 3:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine extra Sprungvariable würde ich nicht machen, da ja auch die Möglichkeit besteht, daß der Spieler einfach nur einen Abhang hinausläuft und somit auch fällt. Dafür eignet sich dann eine Y-Geschwindigkeitsvariable. Wenn gesprungen wird, dann wird halt einmal die Y-Geschwindigkeitsvariable auf einen festgelegtem Wert gesetzt.

garret

BeitragMo, Mai 01, 2006 11:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du "Y-Geschwindigkeitsvariable" mit "Sprung" gleichsetzst, stimmt's ja wieder Wink nur die Wertzuweisung der Variablen muss halt anders erfolgen, d.h. nicht nur von der Sprungtaste abhängig sein.

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

Christoph

BeitragDi, Mai 02, 2006 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich persönlich hätte das mit imagerectcollide() gemacht.

Was ist, wenn die Spielfigur fast landet und der Gegner von rechts ankommt?
Normalerweise Leben-1.
Aber auf garrets Variante würde der Gegner immer tot sein, wenn
der Spieler springt.
D. h. auch wenn ein Gegner mal irgendwo runterspringt und die Spielfigur
springt auch, ist der Gegner tot.

Das kann problematisch werden. Question Confused Question

garret

BeitragMi, Mai 03, 2006 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Das stimmt nicht, ich schrieb

Zitat:

Wenn (Sprung = "Wiederrunterkommen") ...



Außerdem kann doch noch die Abfrage der Koordinaten Spieler<->Gegner eingreifen. Sollte man mit dem Gegner kollidieren und die eigene Y-Koordinate ist größer als die des Gegners, muss man sich ja unter ihm befinden.

MfG
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)
 

Avantasia

BeitragMi, Mai 03, 2006 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
danke euch erstmal ihr habt mir echt weitergeholfen
Jetzt habe ich den ansatz mal schauen was man daraus machen kann Wink

garret

BeitragMi, Mai 03, 2006 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei den ganzen theoretischen Ansätzen könnte man glatt Lust auf ein Jump'n'Run kriegen Very Happy Besonders wenn ich an Super Mario World denke hmmm...

Aber ich hab' ja leider schon zwei Projekte am Laufen und die wollen auch nicht vernachlässigt werden... Wink


Viel Erfolg beim Projekt, mfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

Christoph

BeitragMi, Mai 03, 2006 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie schnell hat man wieder neue Ideen und lässt halb fertige Projekte links liegen.......

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group