RGSS1備忘録その1 ゲームバトラーのズーム

昨日の会社の飲み会で飲みすぎて、今日半日ぐったりしていたSupponです。Σ(・ω・`;)
今後飲みすぎには、気をつけたいとおもいます。(´;ω;`)ウッ

えー、今日からRGSSの備忘録シリーズをはじめます。
これはなんなのかっつーと、「前に作ったあのスクリプトどうやるんだっけ・・」
と、なった場合にすぐ思い出せるように記録するためのものです。
また、これからRGSSを勉強する人々の糧にもなるかもしれません。
ただ、Suppon自身もRGSSについてはド素人なので、ここで言ってるのが
最善の方法ということはあまりないと思います。
もし、もっといい方法があるよ、という方がございましたら、コメントの方に
よろしくお願いします。
あと、今回はRGSS1となってますが、これはRPGツクールXPでの話となります。
今度出るRPGツクールVXがRGSS2なので、XPではRGSS1というふうにします。

では、本題に入りますイェーィ
今回はゲームバトラーのズームです。
同じ素材で、スクリプト中でスプライトを大きくしたり小さくしたりするものです。
071215_02.jpg

これを使えば、わざわざ大きさの違う素材を準備しなくてもいいので、
容量を節約できます。ただ、あまり拡大しすぎるとギザギザが目立ってくるのが欠点です。

で、どうやるのかというとまず、データベースのシステムで
ズームという名前の属性を作っておきます。名前はなんでもいいです。
そして、拡大・縮小させたいエネミーを属性有効度をつかって設定します。
071215_01.jpg

データベース側は、これだけです。あとはスクリプトに頼ります。

まず・・・いやその前に

必ずバックアップをとっておいてくださいね。「ここに書いてあるとおりにやったら、動かなくなったよ。」なーんてなってもSupponはいっさい責任を負いませんので。


では、本題に戻ります。

class Game_Enemy < Game_Battler
  #★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  attr_reader   :zoom
  #★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     troop_id     : トループ ID
  #     member_index : トループメンバーのインデックス
  #--------------------------------------------------------------------------
  def initialize(troop_id, member_index)
    super()
    @troop_id = troop_id
    @member_index = member_index
    troop = $data_troops[@troop_id]
    @enemy_id = troop.members[@member_index].enemy_id
    enemy = $data_enemies[@enemy_id]
    @battler_name = enemy.battler_name
    @battler_hue = enemy.battler_hue
    @hp = maxhp
    @sp = maxsp
    @hidden = troop.members[@member_index].hidden
    @immortal = troop.members[@member_index].immortal
    #★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    case $data_enemies[@enemy_id].element_ranks[20]
      when 1
        @zoom = 0.5
      when 2
        @zoom = 0.75
      when 3
        @zoom = 1
      when 4
        @zoom = 1.5
      when 5
        @zoom = 2
      when 6
        @zoom = 2.5
    end
    #★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  end

という風にGame_Enemy クラスのinitializeを変更します。


ここでやってるのは、Game_Enemyクラスにzoomというインスタンス変数を
設定して、スプライト生成時に拡大・縮小するというものです。
このzoom変数はSprite_Battlerクラスで参照するのでattr_readerを設定します。
次にエネミーの属性有効度を調べるには$data_enemies[@enemy_id].element_ranks[20]
と入れます。
属性有効度は、データベースでAと設定したものは1となります。Bなら2、Cなら3です。
通常はCが設定されるので、Cを1倍にします。
ここでは、属性有効度Aが0.5倍、Bが0.75倍、Cが1倍、Dが1.5倍、Eが2.0倍、Fが2.5倍
というふうにしました。

つぎに

class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :battler                  # バトラー
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     viewport : ビューポート
  #     battler  : バトラー (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, battler = nil)
    super(viewport)
    @battler = battler
    @battler_visible = false
    #★★★★★★★★★★★★★★★★★★★★★★★★
    if battler.class == Game_Enemy
      self.zoom_x = battler.zoom
      self.zoom_y = battler.zoom
    end
    #★★★★★★★★★★★★★★★★★★★★★★★★
end


というふうにSprite_Battlerクラスinitializeメソッドを変更します。
self.zoom_x = battler.zoomでX方向にズーム、
self.zoom_y = battler.zoomでY方向にズームさせることができます。
これで、属性有効度を使うことによってスプライトの拡大・縮小ができるようになったと
思います。
余談ですが、Spriteクラスには画像を左右反転させるmirrorや、透明度を変更するopacity
というようなメソッドが用意されているので、今回紹介した方法を用いれば、
いろんなふうにスプライトを表示させることができるでしょう。

長くなりましたが、今日はこの辺で(^▽^)ノシ

スポンサーサイト

テーマ : RPGツクール
ジャンル : ゲーム

コメントの投稿

管理者にだけ表示を許可する

おぉ…

なるほど…
スクリプトでは、そんな事が…
VXのスクリプトも公開してくれると嬉しいですw

№1208

(^▽^)ノアイ

もちろんVXもでたらやって生きたいと思います。
でも、スクリプトに関してはあまり大きな変更はないと思いますので、
XPと同じ方法でも対応できる可能性があると思います。
プロフィール

Suppon

Author:Suppon
すっぽんでーす。(^▽^)
カルドラ鋭意制作中( ・`ω・´)
Twitter => suppon01
メールはこちらへ
suppon2008@gmail.com

Twitter...

Twitter Reload

最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
ブロとも申請フォーム

この人とブロともになる