Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Zamknięty przez: Ayene
Wto 08 Lut, 2011 19:57
[RGSS] Zmienna przechowująca bitmapę gracza
Autor Wiadomość
Shlizer 




Preferowany:
RPG Maker XP

Pomógł: 11 razy
Dołączył: 02 Sty 2011
Posty: 138
Skąd: /var/tmp
Wysłany: Wto 08 Lut, 2011 01:09
[RGSS] Zmienna przechowująca bitmapę gracza
Szukałem, szukałem i doszukać się nie mogę.. czy ktoś może wie w której zmiennej przechowywany jest sprite lub bitmapa gracza (lub aktora o id 0). Chodzi mi o to, abym mógł sprawdzać piksele tej bitmapy - mam jej nazwę ($game_player.character_name), ale za nic nie mogę znaleźć wskaźnika na samą bitmapę.. nie ma go w Game_Battler, Game_Actor, Game_Character, Game_Player itd..
Jedyna opcja to chyba odwołanie się do Spriteset_Map -> ostatnia wartość tablicy @character_sprites.. da się to zrobić bardziej elegancko?
________________________
Aversum Framework Demo
Aktualnie pracuję nad NSO =p
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Wto 08 Lut, 2011 08:05
Nie wiem, czy dobrze rozumiem, ale może wprowadź dwie nowe definicje w Game_Player, które będę po prostu wyliczać szerokość bitmapy (tylko nie wiem, czy chcesz szerokość/wysokość całego pliku graficznego, czy tylko jednej klatki animacji charactersa).
Kod:
class Game_Player < Game_Character 
  def bitmap_width
    return RPG::Cache.character(@character_name, @character_hue).width / 4
  end 
  def bitmap_height
    return RPG::Cache.character(@character_name, @character_hue).height / 4
  end
end

Może i to kombinacja, ale chyba działa :aww:
________________________


 
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Wto 08 Lut, 2011 13:54
Pisząc 'sprawdzać piksele' Shlizer miał chyba na myśli coś więcej niż szerokość/wysokość aktualnej klatki...

Jeżeli chcesz sam wskaźnik, nie nowy obiekt, bitmapy grafiki actora - to tak, musisz pogrzebać w Spriteset_Map. Jeśli nie wiesz jak się tam odwołać:
Spoiler:

Jednym z 'eleganckich' sposobów jest po prostu przechować to w Game_Temp:
Kod:
class Game_Temp
  attr_accessor :player_sprite
  alias sginit initialize
  def initialize
    sginit
    @player_sprite = nil
  end
end

Potem wejdź w Spriteset_Map, odszukaj fragment "@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))" i zamień go na:
Kod:

$game_temp.player_sprite = Sprite_Character.new(@viewport1, $game_player)
@character_sprites.push($game_temp.player_sprite)



Nie zrozumiałem, czy potrzebujesz całej grafiki, czy tylko pojedynczą klatkę.
Jeśli całej grafiki, dorzuć sobie funkcję do Sprite_Character
Kod:
class Sprite_Character < RPG::Sprite
  def get_bitmap
    return self.bitmap
  end
end

Potem wołaj o nią (zgodnie z zaspoilerowanym sposobem) w stylu: $game_temp.player_sprite.get_bitmap

Jeśli natomiast miałeś na myśli aktualną klatkę, hmm... Musisz użyć src_rect ze Sprite_Character, przechowuje on Rect wyznaczający aktualną klatkę. Nie bawiłem się w tego typu przycinania, nie jestem pewien jak przyciąć ładnie Bitmapę - ale oglądając ten fragment
Kod:
sx = @character.pattern * @cw
sy = (@character.direction - 2) / 2 * @ch
self.src_rect.set(sx, sy, @cw, @ch)

Powinieneś sam dojść, jak w twoim 'sprawdzaniu pikseli' można to wykombinować.
 
 
 
Shlizer 




Preferowany:
RPG Maker XP

Pomógł: 11 razy
Dołączył: 02 Sty 2011
Posty: 138
Skąd: /var/tmp
Wysłany: Wto 08 Lut, 2011 14:57
@Ayene: niestety nie zrozumiałaś.. chciałbym pobawić się bitmapą postaci gracza (przez get_pixel i set_pixel), a nie znać jej wymiary, ale dzięki za poświęcony czas..

@Sabikku: dzięki wielkie.. w sumie łatwy w osiągnięciu i robiący to, co powinien efekt =)
________________________
Aversum Framework Demo
Aktualnie pracuję nad NSO =p
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene