Cursor über das HUD-Fenster anzeigen lassen
Ich habe folgendes Problem.
Wenn ich in meinem Projekt mit meinem Cursor über die Map scrolle und dabei auf ein HUD-Fenster komme, wird der Cursor
unter dem Fenster angezeigt.Ich möchte das ganze aber so haben, dass der Cursor über dem Fenster angezeigt wird.
Ich habe 2 beispiele als Bilder eingestellt.
Das erste Bild zeigt, wie es gerade bei meinem Projekt aussieht.(Der Cursor wurde von mir Rot eingekreist)
Das zweite Bild zeigt, wie ich mir das ganze vorstelle.
Ich hoffe jemand kann mir dabei helfen.
MFG
|
|
Ruby Quellcode |
1 |
mein_cursor.z = 200 |
Neben dem z-Wert ist auch noch der Viewport entscheidend. Jede Grafik wird in einem Viewport angezeigt, der selbst wiederum einen z-Wert hat. Werden zwei Grafiken in verschiedenen Viewports angezeigt, so entscheidet der z-Wert der Viewports, nicht der der Grafiken. Wenn also das Verstellen des z-Werts nicht funktioniert, dann liegt dein Cursor evtl. in einem Viewport, der hinter den Fenstern angezeigt wird.
(Die beiden Screens sehen btw. ziemlich stylisch aus =D)
Jetzt frage ich mich gerade nur :
Wo kann ich den z Wert bzw Viewport von meinem Cursor erhöhen.(Der Cursor ist der erste Actor in der Database)
Leider habe ich immer noch nicht so viel ahnung vom ganzen.
Könntest du mir das ganze auch Schritt für Schritt erklären?
Oder falls es dafür schon ein Tutorial gibt, auf die Seite verweisen?
Danke für die Geduld
MFG
Benutzerinformationen überspringen
Motto: wenn du fragen hast dann frag, versuche aber so zu fragen, dass man dich versteht.
Wenn ja, dann versuch mal ob du in dem move_route event-befehl sowas findest wie "allways on Top",
wenn das auch nich funktioniert, dann musst du die entsprechenden scripts durchschaun, ich weis jetzt auch
nicht in welchem das genau is, ich würde aber mal in game_actor und scene_map schaun, ich weis jetzt leider
gerade nich auswendig welche Klasse aus dem RGSS für die grafische darstellung des Helden da is, aber eigentlich
müsste in scene_map ne Instanz dazu da sein, wenn auch etwas verschachtelt.
gruß agy
|
|
Ruby Quellcode |
1 |
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player)) |
in Spriteset_Map durch die Zeile
|
|
Ruby Quellcode |
1 |
@character_sprites.push(Sprite_Character.new(@viewport2, $game_player)) |
ersetzen. Dann liegt der Held im selben Viewport wie die Pictures und wird daher über den einfachen Fenstern angezeigt.
Ausnahme: MessageFenster, die liegen so ziemlich über allen. Wenn der Held auch über den MessageFenstern liegen soll, so musst du schreiben:
|
|
Ruby Quellcode |
1 2 3 |
player = Sprite_Character.new(nil, $game_player) player.z = 10_000 @character_sprites.push(player) |
Allerdings haben all diese Eingriffe weitere Auswirkungen: So funktionieren manche Befehle wie das Flashen des Heldencharacters u.ä. nicht mehr. Wenn du dich etwas mit Ruby auskennst, würde ich eher dazu raten eine eigene Cursor-Klasse zu schreiben (und evtl. noch mit einem Mausscript zu verbinden, damit die Bedienung etwas komfortabler wird).
Benutzerinformationen überspringen
Motto: wenn du fragen hast dann frag, versuche aber so zu fragen, dass man dich versteht.
aber mir wären da die ganzen koordinaten-abfragen zu stressig, ich mach das eig.
nur in menüs ^^' (vor allem bei dem was ich den screens entnehme, da wären die
ganzen range-abfragen ja ein fürchterliches gefiesel ^^')
und nachdem das ja momentan weitestgehend mit events gelöst zu sein scheint
denke ich mal, dass es eine komplett-umstellung wäre ^^
wie dem auch sei, in einem punkt muss ich ka(m)i recht geben, für den spieler
wäre maussteuerung wahrscheinlich die angenehmste lösung ^^
schau einfach mal in itzamna rein, evtl. findeste ja n script, dass das macht,
was du dir vorstellst.
gruß agy
Benutzerinformationen überspringen
Motto: wenn du fragen hast dann frag, versuche aber so zu fragen, dass man dich versteht.
in meinen augen wäre das massiev inperformant ._. vor allem: je mehr events desto mehr geht dann die performance in keller ._.
Kai dein Tip in Post 5 hat mein Problem gelöst.Vielen Dank.Klappt alles wunderbar
Ich hatte auch erst überlegt eine Maussteuerung einzubauen.Da ich aber nicht großartig Plan davon hatte, habe
ich es gleich wieder verworfen.Das Spiel sollte sich eigentlich auch mit einem Gamepad gut steuern lassen.(Habe es auch schon ausprobiert)
Nochmals vielen Dank an Agenty und Kai für eure Tipps.
MFG
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Asandril« (21. Dezember 2010, 09:33)
Benutzerinformationen überspringen
Motto: wenn du fragen hast dann frag, versuche aber so zu fragen, dass man dich versteht.
Zitat
hmmm... müsste das maus-script dann nicht in jeder main-iteration prüfen ob sich das maus_rect mit einem von allen ranges aller event-rects (position...width/height) schneidet?
in meinen augen wäre das massiev inperformant ._. vor allem: je mehr events desto mehr geht dann die performance in keller ._.
Du packst einfach alle Events, die sich innerhalb des Bildschirms befinden, in einen Array und iterierst nur noch über diesen Array. Immer wenn ein Event sich bewegt (was ja nur alle paar Frames passiert) muss es selbst prüfen, ob es den Bildschirm verlässt oder nicht. Noch effizienter geht es, wenn du die Events in eine Art Gitternetz fallen lässt, so dass du in konstanter Zeit prüfen kannst, welche Events in welchem Quadrat der Map stehen. Dann brauchst du nur noch ein Quadrat (was z.B. aus 4*4 Feldern bestehen könnte) abfragen.
Also ein ähnliches Prinzip wie die Anti-Lag Scripte. Ließe sich auch mit einem davon kombinieren.
Benutzerinformationen überspringen
Motto: wenn du fragen hast dann frag, versuche aber so zu fragen, dass man dich versteht.
in dem fall würde ich einfach sagen, es wäre ideal generell von events weg zu gehn und es komplett zu schreiben, das wäre in meinen augen die beste lösung.
gruß agy
ja, aber das wäre für meinen geschmack ein epischer aufwand ^^'
In Aborakon wird so ein System auch genutzt. Der Aufwand hält sich da eigentlich sehr in Grenzen. Es sind nur die moveto, move_up, move_down etc. Methoden in Game_Character, die überschrieben werden müssen. Das Gitternetz ist dann einfach ein Array, dessen Index sich aus (mapbreite * y + x)/blockgröße berechnet. Ich find nicht, dass das mehr Aufwand ist als ein eigenes Point&Click-System zu schreiben. Immerhin könnte er danach seinen Eventcode beibehalten.
Benutzerinformationen überspringen
Motto: wenn du fragen hast dann frag, versuche aber so zu fragen, dass man dich versteht.
du bist eh der bessere programmierer von uns beiden und früher mein ruby-mentor gewesen ^^'
dann sag ich danke für deine bemühungen und deine belehrungen ^^
gruß agy
Ähnliche Themen
-
RGSS 1 Probleme & Talk »-
Nachricht über RGSS Script anzeigen lassen
(5. November 2010, 00:14)
-
RGSS 1 Probleme & Talk »-
Update der Goldanzeige auf einer Map?
(3. März 2010, 23:46)
-
RGSS 1 Probleme & Talk »-
Namen über Sachen anzeigen lassen.
(12. Januar 2010, 21:46)
-
RGSS 1 Probleme & Talk »-
Hotkey-Menü-Erstellung
(19. August 2008, 06:37)
-
RGSS 1 Probleme & Talk »-
Playergrafik Tieferstellen (Abschaltbar)?
(30. Dezember 2006, 11:54)


