Spielerposition in Script Abfragen und auf Kamerascrollen anwenden
Hallo,
ich bin an einem Projekt beschäftigt, in dem es eine Freie Oberwelt Karte mit normalem Kamerascrollen gibt und einigen Dungeons, wo die Kamera Raum für Raum Scrollen soll.
Ich habe im Forum bereits gesucht und etwas annäherndes gefunden, was zumindest das Scrollen der Kamera aktiviert/deaktiviert:
Kamera fixieren - Einsteigerhilfe - RPG Studio - Make your World real
Und nein: ich kann nicht für jedem Raum eine einzelne Map machen, weil mir sonst schnell die Maps ausgehen.
Sowie ist das Bewegen eines NPC Event zu ungenau, da das Game mit Pixelmovement Script (v1.6) läuft.
Ich bin aber bei der Ruby Syntax noch nicht Fit genug und die Internen Benennungen sind mir nicht bekannt.
In etwa so hatte ich mir das überlegt:
Somit "sollte" die Kamera einen Raum weiter rutschen, wenn man die Grenzen dessen verlässt.
Alle Räume haben auch dicke Wände, sodass es nicht versehentlich zu einem wechsel kommen kann.
Optional ganz nett wär noch, wenn das Scrollen bei einem Raumwechsel "weich" geschehen würde.
Vielen Dank schon mal im Vorraus!
MfG MSC
ich bin an einem Projekt beschäftigt, in dem es eine Freie Oberwelt Karte mit normalem Kamerascrollen gibt und einigen Dungeons, wo die Kamera Raum für Raum Scrollen soll.
Ich habe im Forum bereits gesucht und etwas annäherndes gefunden, was zumindest das Scrollen der Kamera aktiviert/deaktiviert:
Kamera fixieren - Einsteigerhilfe - RPG Studio - Make your World real
Und nein: ich kann nicht für jedem Raum eine einzelne Map machen, weil mir sonst schnell die Maps ausgehen.
Sowie ist das Bewegen eines NPC Event zu ungenau, da das Game mit Pixelmovement Script (v1.6) läuft.
Ich bin aber bei der Ruby Syntax noch nicht Fit genug und die Internen Benennungen sind mir nicht bekannt.
In etwa so hatte ich mir das überlegt:
|
|
Quellcode |
1 2 3 4 5 6 7 |
If $game_switches[1]{
kamera.x = (floor(spieler.y/20)*20)
kamera.y = (floor(spieler.y/15)*15)
# scrolle Kamera
}else{
# normales kameraverhalten
} |
Somit "sollte" die Kamera einen Raum weiter rutschen, wenn man die Grenzen dessen verlässt.
Alle Räume haben auch dicke Wände, sodass es nicht versehentlich zu einem wechsel kommen kann.
Optional ganz nett wär noch, wenn das Scrollen bei einem Raumwechsel "weich" geschehen würde.
Vielen Dank schon mal im Vorraus!
MfG MSC
Die Spieler-Koordinaten kannst du so auslesen:
Ich habe dieses Script gefunden, was dir vielleicht so schon weiterhilft.
Darin habe ich den Befehl gefunden, um die Kamera zu scrollen:
Da dieser nur Tile-genau zu funktionieren scheint, wirst du vielleicht gezwungen sein, das Scrollen selbst zu schreiben, du kannst einfach die Screen-Koordinaten direkt setzen mit:
Ich konnte nichts ausprobieren und bin mir auch nicht zu 100% sicher, aber ich hoffe trotzdem, dir geholfen zu haben. ;D
|
|
Ruby Quellcode |
1 2 3 4 5 |
$game_player.x # Für Tile-Koordinaten $game_player.y $game_player.screen_x # Für pixelgenaue Koordinaten $game_player.screen_y |
Ich habe dieses Script gefunden, was dir vielleicht so schon weiterhilft.
Darin habe ich den Befehl gefunden, um die Kamera zu scrollen:
|
|
Ruby Quellcode |
1 |
$game_map.start_scroll(Richtung, Anzahl Felder, Geschwindigkeit) |
Da dieser nur Tile-genau zu funktionieren scheint, wirst du vielleicht gezwungen sein, das Scrollen selbst zu schreiben, du kannst einfach die Screen-Koordinaten direkt setzen mit:
|
|
Ruby Quellcode |
1 2 |
$game_map.display_x $game_map.display_y |
Ich konnte nichts ausprobieren und bin mir auch nicht zu 100% sicher, aber ich hoffe trotzdem, dir geholfen zu haben. ;D
.Leo
Hab es mal so versucht, aber es wirft mir einen Fehler:
Wobei ich den Fehler seltsam finde, ich habe alle Dateien durchsuchen lassen und es gibt bereits ähnliche aufrufe ser Switches "weiter oben" in den Script Daten.
Wenn ich mich mehr an das verlinkte Bespiel halte und die Syntax so baue geht es auch nicht und wirft mir diesen Fehler:
Ich gehe mal davon aus, dass es ein ganz banaler Fehler ist, oder?
MfG MSC
Zitat
Script 'DungeonCam' line 2: No Method Error occurered.
undefined method `[]' for nil:NilClass
|
|
Ruby Quellcode |
1 2 3 4 5 6 |
class Game_Map if $game_switches[1] == true $game_map.display_x = (Math.floor($game_player.x/20)*20) $game_map.display_y = (Math.floor($game_player.y/15)*15) end end |
Wobei ich den Fehler seltsam finde, ich habe alle Dateien durchsuchen lassen und es gibt bereits ähnliche aufrufe ser Switches "weiter oben" in den Script Daten.
Wenn ich mich mehr an das verlinkte Bespiel halte und die Syntax so baue geht es auch nicht und wirft mir diesen Fehler:
Zitat
Script 'DungeonCam' line 9: SyntaxError occurred.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 |
class Game_Map return if scrollen $game_map.display_x = (Math.floor($game_player.x/20)*20) $game_map.display_y = (Math.floor($game_player.y/15)*15) end def scrollen return $game_switches[1] end end |
Ich gehe mal davon aus, dass es ein ganz banaler Fehler ist, oder?
MfG MSC
Das ist eigentlich ziemlich einfach:
Der Interpreter versucht schon, beim laden des Quelltextes in den Ram, auf die Methode [] von $game_swichtes zuzugreifen, da diese aber erst in der Scene_Title (glaub) deklariert und initialisiert wird schmeißt es da logischerweise einen Fehler. Es wäre am besten wenn du diese Abfrage in eine Methode packst und diese erst nach dem Aufruf von $game_swichtes = Game_Switches.new() aufrufst.
Return ist nur in Methoden erlaubt und die Return-Methode verlangt kein end.
|
|
Ruby Quellcode |
1 2 3 4 5 6 |
class Game_Map if $game_switches[1] == true $game_map.display_x = (Math.floor($game_player.x/20)*20) $game_map.display_y = (Math.floor($game_player.y/15)*15) end end |
Der Interpreter versucht schon, beim laden des Quelltextes in den Ram, auf die Methode [] von $game_swichtes zuzugreifen, da diese aber erst in der Scene_Title (glaub) deklariert und initialisiert wird schmeißt es da logischerweise einen Fehler. Es wäre am besten wenn du diese Abfrage in eine Methode packst und diese erst nach dem Aufruf von $game_swichtes = Game_Switches.new() aufrufst.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 |
class Game_Map return if scrollen $game_map.display_x = (Math.floor($game_player.x/20)*20) $game_map.display_y = (Math.floor($game_player.y/15)*15) end def scrollen return $game_switches[1] end end |
Return ist nur in Methoden erlaubt und die Return-Methode verlangt kein end.
Mehr als a Allgäuer ka a Mensch it wera.
Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren
Ah, ok...
Leider versteht ich nur Bahnhof.
Wie gesagt, ich bin mit der seltsamen Ruby Syntax nicht vertraut.
Der 1. Block ist so, wie ich es von anderen Sprachen gewohnt wäre.
Mein Script liegt direkt vor Main.
Bei dem 2. Block habe ich ein anderes, funktionierendes Beispiel auf meine Bedürfnisse abgeändert.
Leider versteht ich nur Bahnhof.
Wie gesagt, ich bin mit der seltsamen Ruby Syntax nicht vertraut.
Der 1. Block ist so, wie ich es von anderen Sprachen gewohnt wäre.
Mein Script liegt direkt vor Main.
Bei dem 2. Block habe ich ein anderes, funktionierendes Beispiel auf meine Bedürfnisse abgeändert.
Ähnliche Themen
-
Sonstiges »-
AKS Playground - Events & Technik XP
(8. Mai 2011, 13:26)
-
RGSS 1 Probleme & Talk »-
Spielernamen/Spielerposition in RMX-OS nicht speichern?
(16. September 2010, 09:26)
-
Events & Technik »-
Variablen koordination Hilfe ????
(2. August 2010, 01:05)
-
Skript-Anfragen »-
Suche Script - Mode 7 oder so?
(3. Februar 2009, 15:59)
