Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

1

10.04.2012, 01:01

SFML View Problem - HUD des Spielers

Hey Forengemeinschaft,

ich schreibe immernoch an meinem Spiel Space Warfare und bin grade dabei eine Art
open-world einzubauen(mehr oder weniger :D)
Mein View selbst funktioniert soweit, allerdings bleiben die Spielerinformationen(Leben,Schild,Abschüsse etc.)
fest an ihrer Position und "folgen" nicht der Kamera.
Als ich von TransformToGlobal/Local gelesen habe dachte ich,
ich hätte die Lösung gefunden.
War leider doch nicht so deswegen hoffe ich das jemand auch schonmal vor dem Problem
stand und mir ein Tipp gebenkönnte wo ich nachschauen muss!

MfG Marcel
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

2

10.04.2012, 01:05

Das ist eigentlich ganz einfach.
Positioniere deine HUD-Elemente einfach relativ zur View ;)

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

3

10.04.2012, 01:14

Könntest mir nicht zufällig en Beispiel in form von Code geben? wäre echt nett und
bei mir ist die Problematik auch da das ich ein Fadenkreuz habe das dann relativ zum Bildschirm auf gleicher position bleiben soll,
falls du jetzt nichtmehr durchblickst kann ich ein Screenshot machen^^



EDIT: Hat sich erledigt danke, das HUD funktioniert nun aber mein Fadenkreuz macht nicht mit, hast du
da auch dafür ein Tipp?

MfG Marcel
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »FreezingEngine« (10.04.2012, 01:50)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

10.04.2012, 01:48

Du musst das HUD einfach mit der StandardView zeichnen. Das Fadenkreuz natürlich auch.
Wenn du auf der Map etwas anklicken willst musst du die Mausposition vom Lokalen ins Globale umrechnen. Die Methoden dafür hast du ja schon gefunden.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

5

10.04.2012, 01:52

Versuch dir die View als eine Art Kasten in einem großen Kasten vorzustellen (bzw. mehr ist das auch nicht :D ).
Beide Kästen (World & View) haben einen Ursprung, wobei der Ursprung von der View relativ zur World ist.
d.h. wenn der Vektor v im View-Space sein soll muss er mit dem Vektor p, der Position des Ursprungs der View, addiert werden.

Beispiel (ohne SFML-Code):

C-/C++-Quelltext

1
2
3
4
5
6
// Position im World-Space
Vector2 globalPos(64, 128);

// Position im View-Space
Vector2 viewOrigin = view.getOrigin(); // Ursprung der View
Vector2 localPos = viewOrigin + Vector2(64, 128);


Ich hoffe das war halbwegs verständlich :D

EDIT: Habe zu lange gebraucht :(

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

6

10.04.2012, 02:00

Hmm ja also das HUD ist ja soweit fertig, nur kriege es nicht mit dem Fadenkreuz hin.
Das Fadenkreuz hat die Position X und Y (sind variablen) die die Position der Maus gespeichert haben.
wenn ich jetzt die Position mit der View bestimme ist das fadenkreuz entweder konstant
an einer position oder aber ich kann nur die untere
rechte Ecke frei nutzen. :dash:
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

DarioFrodo

Treue Seele

Beiträge: 349

Wohnort: Kerkau, 100km nördlich von Magdeburg

Beruf: Selbstständig

  • Private Nachricht senden

7

10.04.2012, 09:59

Vielleich bringt es etwas, das Fadenkreu zu verschieben?
Kennst du denn die maximalen und minimalen Koordinaten für die Maus?
(Wenn nicht, einfach mal auf der Konsole oder so ausgeben lassen)
Erst wenn der letzte Fluss vergiftet,
der letzte Baum gefällt,
der letzte Fisch gefangen,
dann werdet ihr merken, dass man Geld nicht essen kann

Man verkauft die Erde nicht, auf der die Menschen wandeln.

- Indianerweisheiten

Ich bin auch ein einhornimmond ;)

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

8

10.04.2012, 12:18

Also wenn ich

C-/C++-Quelltext

1
Fadenkreuz.SetPosition(view.GetCenter().x+x , view.GetCenter().y+y); 


mache dann kann ich mein fadenkreuz im unteren
rechten viertel des bildschirms bewegen & er bewegt sich
mit dem view aber das bringt ja jetzt auch nichts.
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

9

10.04.2012, 15:14

Probier mal folgendes aus:

C-/C++-Quelltext

1
2
sf::Vector2f newPosition = mousePos + view.GetCenter() - (view.GetSize() / 2.f);
Fadenkreuz.SetPosition(newPosition);


Das funktioniert bei mir und sollte bei dir auch funktionieren, wenn das ViewCenter in der Mitte liegt.

10

10.04.2012, 16:40

Lies dir meinen Post noch einmal genau durch ;)

Werbeanzeige