Beiträge von AGL

    Hallo erstmal :)
    Ich habe eine weiter frage, undzwar geht es um die Verfolgung von den Koordinaten einer Berührung, genau zu sein um das umrechnen der Koordinaten in OpenGL Koordinaten.


    das Problem ist folgendes: Wenn der Benutzer den Bildschirm berührt, muss auf dieser Position ein Flugzeug erscheinen und dieses soll die Berührung verfolgen, also bewegt sich der Finger, bleibt das Flugzeug unter ihm. Jedoch verstehe ich nicht, warum meine Koordinaten so komisch berechnet werden.


    Mein Renderer für den GLSurfaceView (der das ganze darstellt) wird definiert durch:

    Java
    public void onSurfaceChanged(GL10 gl, int width, int height) {		gl.glViewport(0, 0, width,height);		 		gl.glMatrixMode(GL10.GL_PROJECTION);		gl.glLoadIdentity();				gl.glOrthof(0f, 1f, 0f, 1f, -1f, 1f);	}


    Müsste ich dann nicht, rein theoretisch, die untere linke Ecke als 0|0, oben links als 0|1, unten rechts 1|0, oben rechts 1|1definiert haben. Also in Abhängigkeit zum Bildschirm.


    Dann müsste ich doch die Berührungs Koordinaten per

    Code
    width/(int)event.getX(pointerIndex);


    bzw.

    Code
    height/(int)event.getY(pointerIndex);


    in OpenGL Koordinaten umrechnen? ich meine 0|0 in OpenGL entspricht ja 0|Höhe in Bildschrim Koordinaten? Jedoch erscheint es irgendwo, nur nicht unter der gedrückten Position :D


    Habe ich einen Denkfehler drin, oder gehe ich das Problem allgemein falsch an?
    MFG
    AG


    P.S: Tut mir Leid, wenn das ganze in einem falschen Bereich steht, die anderen schienen mir aber noch unpassender... :D

    Meine Antwort ist ohne Gewähr da ich selbst noch Anfänger bin:
    Wenn du Animationen haben willst, ist doch das sinnvollste OpenGl mit einem Sprite Sheet zu verweden. Also wo du in eine Bilddatei alle Frames für deine Animationen einzeln nebeneinander aufmalst. Dafür reichen in den meisten Fällen wenige Frames um mehr oder weniger flüssige Animationen zu bekommen. Die kannste dann einzeln mit jedem Bildbearbeitungsprogramm erstellen


    Ich hoffe ich habe etwas sinnvolles gesagt :D
    MFG


    AGL

    Ich glaube, dass ich den Fehler mache, die Falsche Frage zu stellen und deshalb nichts im Internet zu dem Thema finde:
    Es geht um die tatsächliche Programmierung bzw. Realisierung eines Levels in einem Spiel. Was ich damit meine lässt sich wohl mit einem Beispiel am besten erklären: Wenn man z.B. Super Mario spielt, stehen in Level 1 an bestimmter Stelle immer diese Blöcke, in denen sich z.B. Münzen befinden. Egal ob man stirbt, aus dem Screen rausläuft oder ähnliches, sobald man wieder an diese Stelle kommt, sind diese Blöcke da. Nun ist mein Problem, dass ich weiß wo ich diese Blöcke haben will, aber nicht weiß wie ich das ganze realisieren soll.


    Konkret schreibe ich gerade an einem Space Invader Klon: Also ich hab unten ein kleines Schiff, von oben kommen Gegner die ich abschießen muss. An sich ist das Spiel fertig bis auf die Level. Für diese Art von Spiel ist das ganze eigentlich, meiner Vorstellung nach, etwas einfacher da die Gegner immer zu bestimmten Zeitpunkten kommen. Somit könnte man ja eigentlich einfach in einer Art Tabelle (die man dann als Array ausliest) abspeichern, welcher Gegner zu welchem Zeitpunkt kommt und dann im Spiel einfach in einer Variable die Zeit abspeichern, sie mit jedem Frame kontrollieren und zum passenden Zeitpunkt die Gegner erstellen. Jedoch weiß ich noch nicht wie man das konkret realisiert.


    Stelle ich mir das ganze richtig, zu kompliziert/zu einfach vor? Was wäre die Herangehensweise in einem Spiel ähnlich zu Super Mario?
    Es wäre bereits eine große Hilfe, wenn ihr mir sagen könnten wie man sowas überhaupt nennt. Mit Stichworten wie "Level programming" oder "Level development" konnte ich bei Google nichts finden.


    MFG
    AGL

    Hallo auch von mir, André


    Relativer Anfänger in der Software-Entwicklung, interessiere mich am meisten für Spiele-Entwicklung und Grafisches Design. Das ganze ist für mich jetzt noch ein Hobby, möchte es aber mit Vollendung meines Studiums zu meinem Beruf machen :D.
    Von daher, auf gute Zusammenarbeit :)