2014-04-18

006-愛してDOTQ(・ω・)

Comment ShareLink
«005-DOTQ後記の後記007-ホラーゲーム作るど!»

通しデバッグ以来、現在改めて暇を見つつちょこちょこっと自分でもプレイしてみてるんですけど、多くの部分を私、烏守がプログラム組んだせいもあり…
非常にこそばゆいです。

「あ、ばかやってるな~」「こんなのでいいのか」みたいな(笑)


というか、今回こそ徹底的に自分でもバグを見つけて完璧にしなきゃですよ!
プログラム側しかわからない不具合もありますし。
プレイヤーさんもまだまだ少ないと思いますし。


そんなこんなですが、DOTQをご愛顧していただければ幸いです。






ver2.5では陣形を使ったまま戦闘終了すると次の戦闘で前に使っていた陣形が使えないという不具合を修正。
陣形スキルは、カジノの景品になっている兵法書を入手すると使えるようになります。
一度使うと戦闘中ずっと効果があるので意外と重宝しますので、
どんどん使っちゃってください。



風林火山の兵法書を全て集めて、とある場所に行くと
強い陣形が習得できるイベントがあります。

兵法書を集める以外にもうひとつ条件があるんですが、基本的に掲示板のクエストをこなしていれば発生するのであまり困らないと思います。
臥竜陣と飛竜陣で2箇所ありますよ!





活動報告として。
そろそろSilverHeartsで制作する作品が固まりそうです!

DOTQの番外編で横スクロール移動型のジャンケンRPG…とか
歪んだ愛の恋愛アドベンチャー…を考案してるんですね。


恋愛アドベンチャーはグラフィックとシナリオ分岐の問題でかなり時間がかかりそうなので、とりあえずはDOTQ番外編のジャンケンRPG(なんだソレw)を先に作っていくと思います。
DOTQに登場したキャラクターが主人公の予定。


引き続きDOTQの不具合探し・修正をしながら制作に打ち込みます!


打つべし、打つべし、
ジャブ、ジャブ、アッパー!!!(゜∀゜)

…っという具合に。
またプロジェクトに進行があればこちらに書き込みます。


※追記※
この後、結局なにものでもないホラーアドベンチャー系の作品になってしまいました。
話がちが~う!w

category:
2014-04-13

RGSS-バトラーアニメーション

Comment ShareLink
«RGSS一覧

このスクリプトは簡単に言うと


戦闘中、バトラーが動きます。


動かないキャラだけの戦闘画面にはもう飽きた(・ω・`)
なんて人にはもってこいかも???

今回紹介するのは
・待機(息づかい)
・通常攻撃
・スキル使用
・被ダメージ
・勝利時

でのアニメです。

キャラ&エネミーごとにボイスを付けることもできます。
(ボイスの付け方は最後の方に記載)


※用意するエネミーの絵数が多いと、容量の問題やグラフィック準備の手間などの事情によりオススメできません。素材準備の段階でエターナる恐れがありますので、完成させる強い意志が必要になります!
…とりあえず制作頑張りましょう!!!


【今回の変更点】
・Sprite_Battler
・Scene_Battle 4



グラフィック準備


歩行キャラと同様に
バトラーもひとつのファイルに複数のパターンを用意。

120×120pxのバトラーなら、
ひとつの用途のアニメで4パターンの動きがあるとすれば
480×120pxの大きさになります。
攻撃時、ダメージ時などの複数の用途がある場合は
それと同じように縦にパターンを増やします。

まずはスクリプトを書いて、歩行キャラをバトラーフォルダに入れて試してみよう!
基本横4パターンで解説。


勝利時バトラーアニメ準備


■Scene_Battle 1

def main
$winner = false 追加

■Scene_Battle 2

def start_phase5 $winner = true 追加

通常攻撃/スキル使用時アニメ準備


■Game_Battler 1

公開インスタンス
attr_accessor :attack_action
attr_accessor :skill_action
 追加
オブジェクト初期化
@attack_action = false
@skill_action = false
 追加

■Scene_Battle 4

def make_basic_action_result
「対象側バトラーの配列を設定」の次あたり
@active_battler.attack_action = true 追加
def make_skill_action_result
「ステータスウィンドウをリフレッシュ」の下あたり
@active_battler.skill_action = true 追加



ここからが本番(`・ω・´)qm



■Sprite_Battler

「オブジェクト初期化」initializeに以下を追加
# 待機アニメ用
@r_anime_count = 0
@r_pattern = 0
# 攻撃/スキル/ダメージ用
@anime_count = 0
@pattern = 0
@damage_anime = false

ループする待機アニメと、しないアニメで変数を使い分ける。
def update
「ファイル名か色相が現在のものと異なる場合」
if @battler.battler_name != @battler_name or …
のwidthとheightを下記のように変更
@width = bitmap.width / 横パターン数
@height = bitmap.height / 使う縦パターン数
self.src_rect.set(0, 0, @width, @height)


歩行キャラならパターン数はどちらも4となります。
src_rectで初期に表示されるパターンは一番左上。
別の用途パターンにしたい時はyに@height * 2というように入れます。
一応書いておきますが…
"@height"の記述だけにすると用途2パターン目(歩行キャラなら左向き)
が表示されます。

以下は
「可視の場合」if @battler_visible の中に記述。

「ダメージ」
被ダメージ時のアニメを実行するか否かの変数を操作。
回避の表示が"Miss"ではない場合は変更してください。
if @battler.damage_pop
if @battler.damage != "Miss" and @battler.damage > 0
  @damage_anime = true
 end

end

これはダメージを受けた際のアクションなので
逆に回復した時にアクションを追加したい際は
@battler.damage > 0 の符号を < に変えて記述します。
0は含まれないのでダメージ0の時は何もアクションしません。

この丁度下あたりに追加
# ダメージアニメ
if @damage_anime
 @anime_count += 1
 # パターンが最後尾ならウェイト
 if @pattern == 3
  # countが20になったらアニメ終了
  if @anime_count == 20
   @anime_count = @pattern = 0
   self.src_rect.set(0, 0, @width, @height)
   @damage_anime = false
  end
 # この数値でアニメ速度を調整
 elsif @anime_count > 2
  @pattern += 1
  self.src_rect.set(@pattern * @width, @height * 縦パターン, @width, @height)
  @anime_count = 0
 end
 return
end


通常攻撃アニメとスキル使用時アニメなどもダメージアニメと同様。
if @damage_anime 部分を
if @battler.attack_action か
if @battler.skill_action に変更して
@damage_anime = false を
@battler.attack_action = false か
@battler.skill_action = false に変えるだけ。

# 戦闘勝利時に勝利用バトラーグラフィックに変更
# ※「バトラー名_win.拡張子」のグラフィックを用意
if @battler.is_a?(Game_Actor) and $winner
 self.bitmap = RPG::Cache.battler("#{@battler.battler_name}_win", 0)
 @anime_count += 1
 # パターンが最後尾ならウェイト
 if @pattern == 3
  # countが20になったらアニメ終了
  if @anime_count == 20
   @anime_count = @pattern = 0
   self.src_rect.set(0, 0, @width, @height)
   @damage_anime = false
  end
 # この数値でアニメ速度を調整
 elsif @anime_count > 2
  @pattern += 1
  self.src_rect.set(@pattern * @width, 0, @width, @height)
  @anime_count = 0
 end
 return
end


リターンしなかった場合には待機アニメーションをするように
最後に待機アニメのスクリプトを追加します。
# 待機アニメ
@r_anime_count += 1
if @r_pattern == 3
 if @r_anime_count == 10
  @r_anime_count = @r_pattern = 0
  self.src_rect.set(0, 0, @width, @height)
 end
# この数値でアニメ速度を調整
elsif @r_anime_count > 6
 @r_pattern += 1
 self.src_rect.set(@r_pattern * @width, 0, @width, @height)
 @r_anime_count = 0
end


これを応用してアイテム使用や様々なシーンに
バトラーをアニメさせることが可能です。



♬♪ ボイスの付け方 ♪♬


■Sprite_Battler


ダメージ時のバトラーボイスは
@damage_anime = true
の、アニメ実行記述の直後に記述。

if @battler.is_a?(アクターならGame_Actor、エネミーならGame_Enemy)
 case @battler.id
 when 1
  Audio.se_play("Audio/SE/ボイス1", 音量, ピッチ)
 when 2
  Audio.se_play("Audio/SE/ボイス2", 音量, ピッチ)
 end
end


■Scene_Battle 4


行動時のバトラーボイスは
@battler.attack_action = true
の、アニメ実行記述の直後に記述。

if @active_battler.is_a?(アクターならGame_Actor、エネミーならGame_Enemy)
 case @active_battler.id
 when 1
  Audio.se_play("Audio/SE/ボイス1", 音量, ピッチ)
 when 2
  Audio.se_play("Audio/SE/ボイス2", 音量, ピッチ)
 end
end


を追加。
音量・ピッチは省略しても大丈夫です。
それぞれキャラのIDで判定しており、
上記のように when には ID番号 を入れます。
ボイスを付けたいキャラのIDのwhenを追加するだけです。

ランダムにボイスを変化させたい場合は
se_playの部分を下記のように変更。

変数 = rand(分岐数-1)
case 変数
when 0
 Audio.se_play("Audio/SE/ボイス1")
when 1
 Audio.se_play("Audio/SE/ボイス2")
 :
end

というように条件分岐させるといいでしょう。
※乱数は0を含んでランダムな数を決定するので分岐数から-1の数を設定。


静止画でグラフィックを一時的に変更するだけなら
このスクリプトのアニメ部分(パターン)の記述を除いて、
画像変更・カウントだけを残して組み込めばOK。

静止画で動きをつけた方が容量の問題などもスマートにできるかも…



★このスクリプトを使った関連作品


category: