[RMXP][RMACE] Dowolne ustawienie ekranu względem bohatera.

Jeśli chcesz podzielić się swoimi materiałami z innymi użytkownikami forum.

Moderatorzy: GameBoy, Dragon Kamillo

ODPOWIEDZ
Awatar użytkownika
Dragon Kamillo

Golden Forki 2016 - Pełne Wersje (miejsce 3); Golden Forki 2013 - Zapowiedzi (zwycięstwo); Liga Mapperów Sezon IV (miejsce 2)
Posty: 1948
Rejestracja: 18 paź 2009, 21:23
Lokalizacja: Poznań/Granowiec

[RMXP][RMACE] Dowolne ustawienie ekranu względem bohatera.

Post autor: Dragon Kamillo »

Jak wiecie lubię czasami kombinować XD. A więc wykombinowałem ze skryptów na trzęsienie ekranu, stałe jego przesunięcie względem naszego herosa (coś podobnego do działania przesuwania ekranu w RM2k/3). Działa to zarówno w XP jak i ACE (VX prawdopodobnie też, ale nie sprawdzałem).
No dobra, na początek przesunięcie poziome:
Wchodzimy do RGSS i szukamy zakładki Spriteset_Map.
Potem szukamy tam linijki która zawiera:

Kod: Zaznacz cały

@viewport1.ox = $game_map.screen.shake
i zamieniamy ją na np:

Kod: Zaznacz cały

@viewport1.ox = $game_variables[10] + $game_map.screen.shake
Oczywiście zamiast zmiennej można użyć jakiejś liczby, ale myślę że warto mieć kontrolę nad tym z poziomu eventów.
A teraz czas na przesunięcie w pionie:
Tworzymy na Main nową zakładkę i wklejamy do niej:

Kod: Zaznacz cały

class Game_Screen
  attr_reader :tremble
end
class Spriteset_Map
    alias upd_tremble_later update
  def update
    @viewport1.oy = $game_variables[11]
    upd_tremble_later
  end
end
I znowu zamiast zmiennej może być stała liczba.
Wartości ujemne przesuwają ekran w górę i lewo, a dodatnie w dół i prawo.

Oczywiście ten krótki kod nie jest przeze mnie napisany od zera, ja go tylko wyciągnąłem z większego skryptu autorstwa Blizzarda, na trzęsienie ekranu w pionie (RM pozwala na tylko w poziomie).
Link do paczki skryptów która zawiera też i ten na trzęsienie: http://forum.chaos-project.com/index.php?topic=105.0
Jeśli będziecie chcieli go użyć, to po prostu nie wklejajcie tego kodu na przesuwanie w pionie, tylko odnajdźcie w nim linijkę:

Kod: Zaznacz cały

@viewport1.oy = ($game_switches[TREMBLE_SWITCH] ? $game_screen.tremble : 0)
I dodajcie tą wartość, czy tam zmienną tak jak w przypadku przesuwania poziomego np:

Kod: Zaznacz cały

@viewport1.oy = $game_variables[10] + ($game_switches[TREMBLE_SWITCH] ? $game_screen.tremble : 0)
Tylko nie zmieniajcie tego pod Spriteset_Battle!

Wsio - mam nadzieję, że się przyda.
ODPOWIEDZ