Kollisionsprob bei Jump&Run

Status
Nicht offen für weitere Antworten.

Soleil83

Mitglied
Hallo, folgendes Jump & Rund Problem: ... meine spielfigur rennt gegen einen Gegner. dabei wird folgende Methode aufgerufen
Code:
private static long t()
{return System.currentTimeMillis();}
private long letzteKollision;

        public boolean kollidiertMitGegner(PositionierbaresElement derAndere)
	{
	if(t()-letzteKollision<3000)return false; // Kollision für 2400 msekunden aussetzen lassen

	boolean kollision=getXPos()+20 >=  derAndere.getXPos()
	&& getXPos()-20 <=  derAndere.getXPos() 
	&& getYPos()+20 >=  derAndere.getYPos() 
	&& getYPos()-20 <=  derAndere.getYPos();

	if(kollision)letzteKollision=t();
	return kollision;
	}

Die Zeitabfrage ist dazu da, dann unsere Spielfigur "fred" nicht 100 mal nacheinander getroffen wird, während der Gegner nur an ihm vorbei läuft. Er ist also für 3 sec unverwundbar, wenn es ein und derselbe Gegner ist. Das ganze ist aber noch nicht so optimal, denn ich habe 2 Möglichkeiten diesen gegner zu treffen. Die eine ist: meine spielfigur steht und der gegner braucht 3 sec um aus dem blickfeld von "fred" raus zu sein. wenn "fred" allerdings gleichzeitig rennt braucht er nur 1 sec um rauszusein... kann mir jemand ne elegantere Lösung vorschlagen?

*EDIT* ist es vielleicht möglich vorher abzufragen, wie lange die letzte Kollision her ist? Also bevor die Methode aufgerufen wird? Das tut sie übrigens hier:
Code:
if( elemente.get(k) instanceof Gegner )
		    {
      	    if(((Gegner)elemente.get(k)).istTot()== false)
		      ((Gegner)elemente.get(k)).autoMove(this);	
		    if(((Gegner)elemente.get(k)).kollidiertMitGegner(fred)) 
		      derZaehler.trifftGegner();

Gruß und Danke, Soleil
 

EgonOlsen

Bekanntes Mitglied
Ich verstehe das Problem nicht so ganz. Wenn die Figur nach 1 Sek. aus dem Bildschirm raus ist, ist das doch sowieso egal, oder? Oder läuft sie dann am anderen Ende wieder rein?
Naja, wie auch immer. Wie wäre es, wenn du den zeitlichen Ansatz ganz fallen lässt und stattdessen bei einer Kollision prüfst, ob es im letzten Durchlauf auch eine gegeben hat und erst dann wieder eine neue zulässt (bzw. zurückmeldest), wenn dies nicht der Fall war? Damit wäre sichergestellt, dass es nicht zu unzähligen Kollisionen kommt, während die Sprites aneinander vorbeilaufen und du hast das Problem mit der evtl. nicht gewollten Verzögerung nicht. Oder du kannst das auch kombinieren...
 

amlug

Mitglied
ich würde einfach nur einmal Punkte abziehen (dann vielleicht so viel,wie bei 3 Sekunden), aber dann mit einem boolean
festlegen, dass der Spieler getroffen wurde, und erst wieder auf false setzten, wenn er an dem Gegner vorbei ist.

Amlug.
 

Soleil83

Mitglied
hallo leute... also das problem hat sich inzwischen gelöst, deshalb lass ich die erläuterung mal weg, wie ich es meinte...

aber dafür hab ich ne andere frage: wie kann man die figur für 2 sec "blinken" lassen? wonach muss ich suchen? gibts da was vorgefertigtes von java? blinken meine ich im sinne von "du wurdest getroffen, dir wird energie abgezogen aber du bist noch nich tot..." wie das eben manchmal bei jump & runs gemacht wird, wenn die spielfigur gegen was böses rennt. ich glaube bei mario brothers war das früher so (bin mir aber nich sicher).
 

Core

Mitglied
Vielleicht die Figur mit dem Hintergrund alle x Milisekunden überzeichnen und dann die Figur wieder auf den Bildschirm packen. Ich weiß nicht genau ob das umzusetzen ist denn ich habe mich noch nicht viel mit Grafik in Java beschäftigt.
 
G

Guest

Gast
ich leider auch nicht... den teil haben immer andere übernommen ;-) naja dann werd ich das wohl mal auch den anderen überlassen *g*
 

Dr. Morv

Mitglied
Programmiermäßig müsste es doch leicht umzusetzten sein:
Du hast zwei Variabeln, vielleicht noch ne boolean, die prüft, ob du überhaupt blinken sollst, zählst die eine hoch bis zu einem bestimmten Wert, dann erhöchst du die andere, und während die erste unter der Hälfte ihres Höchstwertes ist, wird die Figur nicht gezeichnet, sonst doch. Das ganze geht, bis die zweite Variable eine bestimmte Grenze erreicht hat.

Braucht man mich wirklich, damit ich einen Blinkalgorithmus erkläre?? :autsch:
 

Hansdampf

Bekanntes Mitglied
Code:
if(t()%500<200)zeichneFigur();  //blinkt 2mal inner sek für 200 Millis
if(t()%333<100)zeichneFigur();  //blinkt 3mal inner sek für 100 Millis
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
E Möchte Jump and Run programmieren Spiele- und Multimedia-Programmierung 2
N Jump and run Spiel - wo anfangen / weitermachen? Spiele- und Multimedia-Programmierung 11
F Jump'n Run Background wiederholen Spiele- und Multimedia-Programmierung 3
E Java Jump and Run Map zu groß Spiele- und Multimedia-Programmierung 14
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
Finalspace Entwicklung eines Jump & Run Spiels Video-Tutorial Spiele- und Multimedia-Programmierung 12
C Doodle Jump Sprung Physik? Spiele- und Multimedia-Programmierung 4
M Jump 'n' Run Game - Blöcke? Spiele- und Multimedia-Programmierung 7
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
W Doodle Jump Spiele- und Multimedia-Programmierung 6
H Jump&Run Tutorial Spiele- und Multimedia-Programmierung 3
D Jump'n'run Kollision bei Blöcken Spiele- und Multimedia-Programmierung 10
K Jump'N'Run Hügel Spiele- und Multimedia-Programmierung 11
T Jump and Run - Unklarheiten Spiele- und Multimedia-Programmierung 5
Arcus Jump and Run etwas komplizierter - Benötige Starthilfe Spiele- und Multimedia-Programmierung 12
T Ist meine Jump and Run Engine zu genau? Spiele- und Multimedia-Programmierung 4
N Grundlagen für ein Jump&Run Spiele- und Multimedia-Programmierung 3
F "Doodle Jump" Projekt Spiele- und Multimedia-Programmierung 8
U Jump n' Run 2D Geometrie und Kollisionsabfrage? Spiele- und Multimedia-Programmierung 11
L Jump-n-Run Auslastung verringern Spiele- und Multimedia-Programmierung 16
Apo Kollisionserkennung bei Jump'n'Run Spiele- und Multimedia-Programmierung 69
F jump and run idee Spiele- und Multimedia-Programmierung 2
T Umsetzung eines 2D Jump and Runs Spiele- und Multimedia-Programmierung 7
K Jump n Run Keylistener und Schleifen Spiele- und Multimedia-Programmierung 8
F DJADD Jump and Run Spiele- und Multimedia-Programmierung 10
D Jump 'n run die 2. [spielerbewegen mit zeit] Spiele- und Multimedia-Programmierung 6
D Jump and Run Game -- Kollisionsabfrage Spiele- und Multimedia-Programmierung 30
S Jump'n'Run: Probleme mit Kollision Spiele- und Multimedia-Programmierung 13

Ähnliche Java Themen

Neue Themen


Oben