Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen? (https://www.delphipraxis.net/147715-strategiespiel-ansicht-objekte-auf-spielbrett-erstellen.html)

Chefx 14. Feb 2010 20:23


Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen?
 
Hallo DP,

Ich erkläre erst mal das Problem und wollte euch fragen wie ihr das umsetzten würde oder wie man das berechnen kann?
Bei Google hab ich nix gefunden, weil ich nicht weiß wie man das am besten "Umschreiben" soll.

Ich will in mein Strategiespiel Gebäude usw. bauen ,was man halt in ein Strategiespiel machen kann ;-) .
Das Problem ist das man mit dem Cursor auf ein 2D Oberfläche sich bewegt und das die Maus ja nicht in das Bild wandert(Cursor hat ja X,Y Koordinierten und nicht X,Y,Z).
Was auch nicht geht ist ja wenn ich die Pixel direkt zur Bewegung nutze weil ich ja nicht unbedingt von oben schaue sondern schräg auf das Spielbrett schau.

Was habt ihr für Ideen wie man das Berechnen könnte?

Ich danke im voraus für eure Antworten


MfG

Chefx

Lumpiluk 14. Feb 2010 23:12

Re: Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen
 
Also in OpenGL gibt es die Methode, die Objekte, die angeklickbar sein sollen, einfach in einem unsichtbaren Frame in unterschiedlichen Farben zu rendern. So kann man jedem Objekt einen Index zuweisen und den als bestimmten Farbwert benutzen und muss schließlich nur überprüfen, welche Farbe sich unter der Maus befindet.
Vielleicht ließe sich das in deinem Spiel irgendwie umsetzen...

Panthrax 15. Feb 2010 01:18

Re: Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen
 
Da wirst Du dich wohl ein bisschen mit Vektormathematik beschäftigen müssen...

Medium 15. Feb 2010 03:56

Re: Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen
 
Der übliche Weg bei 3D Krams ist es, einen Strahl an der Mausposition in Kamerarichtung in die (fertig transformierte) Szene zu schicken, und zu prüfen mit welchem Dreieck (und damit mit welchem Objekt) sich der Strahl zuerst schneidet. Die genannte Farbindizierung wäre ein ebenfalls öfter anzutreffender Weg.

Die wesentlichen Fragen sind hier wohl: Auf was für eine Grafik API setzt du auf? In welcher Art und Weise liegt deine Szene vor? Wie sind "Gebäude" definiert (Bitmaps mit Alpha, Meshes, Voxel)? Davon (mindestens) wird wohl abhängen was du a) machen kannst und b) das performanteste ist.

Edit: Sekunde! Das Problem ist scheinbar nicht, wie man Dinge in der Szene auswählt, sondern wie du herausbekommst auf welchem Feld deines Welt-Rasters sich die Maus befindet oder? Was hast du für ein Raster? Gibt da unterschiedliche Strategien für verschiedene Raster, und es wäre auch wichtig ob der Boden komplett eben ist, oder ob du Hügel/Täler dabei hast, die die Regelmäßigkeit in 2D zerstören.

Chefx 15. Feb 2010 16:16

Re: Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Medium
Edit: Sekunde! Das Problem ist scheinbar nicht, wie man Dinge in der Szene auswählt, sondern wie du herausbekommst auf welchem Feld deines Welt-Rasters sich die Maus befindet oder? Was hast du für ein Raster? Gibt da unterschiedliche Strategien für verschiedene Raster, und es wäre auch wichtig ob der Boden komplett eben ist, oder ob du Hügel/Täler dabei hast, die die Regelmäßigkeit in 2D zerstören.

Japp , genau das meine ich :mrgreen:
Ich nutze OpenGL.
Die Objektselektion hab ich mit den Tutorial gemacht:http://wiki.delphigl.com/index.php/T...bjektselektion
Das ging dank dessen ja ganz einfach :zwinker:

Erstmal würde ich das auf einer ganz glatten Oberfläche machen (siehe Bild1 im Anhang) also ohne Hügel und Bergen.
Wenn es mit der einfachen Fläche geht kann ich das dann auch mit Bergen und Hügeln.

Im Bild zieht man auch das es um den Cursor geht ,also dass das Objekt immer schön lieb den Cursor folgt auf der Spieloberfläche.
und das ist halt mein Problem.
1. Lösungsansatz wäre die Berechnung des Winkeles Zwischen Senkrechte Linie und Cursor-Objekt-Linie (Bild2) also von der senkrechten(Wo die Kamera ist) zur Linie zwischen Kameraursprung durch den Cursor.
Die Höhe der Kamera hätte man ja und dann das ganze mit COS,SIN oder TAN ausrechnen.

Aber wie bekommt man das raus ?
Der Perspecktivenwinkel würde bei mir 45° sein.
Soll ich die Pixel in Grad umrechnen?

MfG
Chefx

Panthrax 15. Feb 2010 20:13

Re: Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen
 
Da ist ja schon ein bisschen was zusammengekommen. Nun braucht es aber wirklich die richtigen Mittel: Vektoren, Strahlensatz, Trogonometrie. Vielleicht gibt einem OpenGL auch diese Mittel an die Hand, da kenn' ich mich nicht aus. Ohne dieses Verständnis "rechnet" man sich aber irgendwann tot.

Bewegt sich der Zeiger bspw. auf der Bildschirmebene, lautet der Vektor (Blickpunkt, Zeigerpunkt) und es muss geschaut werden, welche Ebene bzw. Fläche dieser Vektor (als erstes) durchsticht. Gehört diese Fläche dann zu einem anklickbaren Objekt...

Richtungsvektor Selektionsvektor := Ortsvektor Blickpunkt - Ortsvektor Zeigepunkt;
// entspricht z.B. der grauen Linie im Bild 2

Jetzt braucht man (1) entweder einen Ortsvektor eines Punktes der Ebene und den Normalvektor der Ebene oder (2) einen Ortvektor eines Punktes der Ebene und die Spannvektoren. Hinzu kommen die Grenzen der Ebene, um daraus eine Fläche abzuleiten. Hier soll bspw. gelten: Der Ortvektor liegt genau in der Mitte und die Spannvektoren sind senkrecht zueinander und sind genau so lang, dass sie vom Endpunkt des Ortsvektors bis zur Kante der Fläche reichen. (Hier weden also nur Rechtecke definiert.)
// entspricht z.B. einer der hellroten Linien im Bild 2 (also einer Kante bei 2 Dimensionen)

Nun kann man versuchen den Schnittpunkt zu bestimmen [1]:

Ortsvektor Blickpunkt B + R * Richtungsvektor Selektionsvektor S = Ortsvektor Ebene + X * Spannvektor 1 Ebene + Y * Spannvektor 2 Ebene;

(R, X, Y sind Skalare)

Für die Lösung gilt dann:
(allgemein:)
Im Punkt P := B + R * S durchsticht der Selektionsvektor die Ebene.
Ist R > 0 liegt der Punkt vor dem Betrachter ("auf dem Bildschirm").
(für die o.g. Definitionen gilt weiter:)
Sind |X| <= 1 und |Y| <= 1 durchsticht der Selektionsvektor die Fläche.

[1] Hinweise: Steht der Selektionsvektor senkrecht zum Normalvektor der Ebene (d.h. der Selektionsvektor verläuft parallel zur Ebene; möglicherweise in ihr), dann hat das Gleichungssystem keine Lösung.

Man sucht die Fläche für die R minimal ist (d.h. keine verdeckte Fläche).

Hat man einmal die Fläche bestimmt, guckt man, zu welcher Struktur (Objekt) diese gehört.

Übrigens heißt es: ... mit dem Tutorial ... , dass es um den Cursor geht ... Perspektive ... um nur einige Grausamkeiten zu nennen...

Chefx 22. Feb 2010 20:08

Re: Strategiespiel-Ansicht: Objekte auf Spielbrett erstellen
 
erst mal danke an alle :-D für eure die Ideen :mrgreen:
hatte noch keine Zeit dazu

Ich werde es mal versuchen zu programmieren :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz