(Kollisionsabfrage) Auf Gegner Fallen dann Kollision
Übersicht

AvantasiaBetreff: (Kollisionsabfrage) Auf Gegner Fallen dann Kollision |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
![]() |
ChristophBetreff: Nichts ohne die Kollision |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
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) |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du "Y-Geschwindigkeitsvariable" mit "Sprung" gleichsetzst, stimmt's ja wieder ![]() MfG garret |
||
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht) |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() ![]() ![]() |
||
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
danke euch erstmal ihr habt mir echt weitergeholfen Jetzt habe ich den ansatz mal schauen was man daraus machen kann ![]() |
||
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei den ganzen theoretischen Ansätzen könnte man glatt Lust auf ein Jump'n'Run kriegen ![]() Aber ich hab' ja leider schon zwei Projekte am Laufen und die wollen auch nicht vernachlässigt werden... ![]() Viel Erfolg beim Projekt, mfG garret |
||
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht) |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie schnell hat man wieder neue Ideen und lässt halb fertige Projekte links liegen....... | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group