カレンダー

07 | 2014/08 | 09
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -

最近のコメント

最近の記事

カテゴリー

リンク

このブログをリンクに追加する

月別アーカイブ

アクセスカウンター

スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[--/--/-- --:--] | スポンサー広告
樹木化のイラストができた
○通常イラスト
○ダメージ3イラスト
○ダメージ2イラスト
○ダメージ1イラスト
○一般状態異常1
○一般状態異常2
○時間停止
○脱衣アニメ
○液体化
○マネキン人形化
○球体間接人形化
○操り人形化
○膨体化
○平面化
○スライム捕食
○丸飲み系
○火達磨
○感電
○旋風系
○パイ投げ
○樹木化
○石化 ← 今、ココ
○彫像化
○ブロンズ像化
○凍結
○黄金化
○蝋人形化
○クッキー化

男は黙って石化イラスト
スポンサーサイト
[2014/08/31 23:49] | ペトリケーション2 | コメント(2)
最近習作で作った動画を
Maiki's House本家に挙げたよ。凍結、石化、硬化剤の三作。
イメージから動画お庫出しの一番下

一応、直リン
http://madasama.dip.jp/maikishouse/movie/index.html

当然、外道な固め動画だから、耐性のない人は見るなよ。

見ていいのは大人だけだからな
[2014/08/26 22:37] | ユキちゃん・写真集 | コメント(4)
パイ投げのイラストができた
○通常イラスト
○ダメージ3イラスト
○ダメージ2イラスト
○ダメージ1イラスト
○一般状態異常1
○一般状態異常2
○時間停止
○脱衣アニメ
○液体化
○マネキン人形化
○球体間接人形化
○操り人形化
○膨体化
○平面化
○スライム捕食
○丸飲み系
○火達磨
○感電
○旋風系
○パイ投げ
○樹木化 ← 今、ココ
○石化
○彫像化
○ブロンズ像化
○凍結
○黄金化
○蝋人形化
○クッキー化

体力ゲージ的に今日はここまで

[2014/08/17 20:56] | ペトリケーション2 | コメント(0)
旋風系状態異常のイラストが描けた
○通常イラスト
○ダメージ3イラスト
○ダメージ2イラスト
○ダメージ1イラスト
○一般状態異常1
○一般状態異常2
○時間停止
○脱衣アニメ
○液体化
○マネキン人形化
○球体間接人形化
○操り人形化
○膨体化
○平面化
○スライム捕食
○丸飲み系
○火達磨
○感電
○旋風系
○パイ投げ ← 今、ココ
○樹木化
○石化
○彫像化
○ブロンズ像化
○凍結
○黄金化
○蝋人形化
○クッキー化

ようやく、次へ進める。
いろいろデータ喪失は痛かったなぁ

[2014/08/15 18:39] | ペトリケーション2 | コメント(2)
パーティアタック実装してみた
1.Window選択で、敵、味方を選べるようにする。

たとえば、以下の機能を入れてみよう。
敵選択で「ターゲットを味方に変更」の選択肢の最後に出して、これをクリックしたら「味方選択画面に代わる」

敵選択画面クラスは「Window_BattleEnemy」である。
・item_maxを修正して項目数の最大数で一個増やす
・draw_item(index)でindexが戦闘中のエネミーの数より多かったら、敵モンスター名を表示するのではなく「ターゲットを味方に変更」を表示するようにする。これだけで、あとは選択できるようになっている。

続いて、画面の結果を受け取る方にも修正しよう。
受け取る関数はScene_Battleで行える。

敵キャラの決定はon_enemy_okである。
「ターゲットを味方に変更」を選択した場合、indexが画面の敵の数より一個多いのでそれで判断する。
一個多ければselect_actor_selectionを呼びなおしてやる。
呼び直しの際には、Windows.hide処理に注意すること。アイテムやスキルから呼ばれる場合もあるからね。

同じようにWindow_BattleActorも変更しよう。
こいつは結構面倒くさかった(省略)

2.Game_Actionに選んだのは味方ウィンドウであるか、敵ウィンドウであるかを記録する。
 Game_Actionにパラメータを一個追加してやるだけでOK。
 select_actor_selection/select_enemy_selectionの中で、適切な値を入れてやればどこの画面で選択したのかが記録できる。

3.targets_for_opponents/targets_for_friendsでうまいことやる(←なんだよ、それis_target_enemyを使う
 Game_Action.make_targetsで「2」で作ったパラメータを参照し判断するように実装する。
 Game_Action.targets_for_friendsで味方チェックを取っ払えばOK。

 以上、俺的チラシの裏でした。
 これから、また、イラスト作成に入ります。
 質問とかは受け付けない(受け付けられない)のであしからず。

 時間ができたら、詳しく説明したい。

 ではでは。
[2014/08/09 18:43] | ペトリケーション2 | コメント(2)
パーティアタックを作るぞ
 

 さて、続いてパーティーアタックの実装に入る。

 FFでは当たり前の世界。うっかり味方にブレイク、ブレクガアタックでござる。

 まず、選択ロジックだが、どうやって探すか・・・・

 あれだ、データベースのアイテムとかで、全体とか、単体とか指定しているところがあるべ。
 きっと、スクリプトでそのパラメーターを判断しているところがあるだよ。

 調べるとRPG::UsableItem.scopeがそれだな。
 よし、こいつを検索だ。

 おりょ、引っかからんよ。

 ならば「戦う」とかコマンド実行するところを探してみよう。

 これは引っかかった。BattleManagerでバトルの処理を行ってるようだ


↓ここで戦うコマンド入力開始
Scene_Battle.command_fight

↓ここでメニューハンドラーを渡しているようだ
Scene_Battle.create_party_command_window

↓ここでアクターコマンドウィンドウの作成しているっぽい
Scene_Battle.create_actor_command_window

↓ここで「攻撃」
Scene_Battle.command_attack

↓これで味方選択
Scene_Battle.select_actor_selection

↓これで敵選択
select_enemy_selection

↓となると仮説。Scene_Battleを下のように変更すると、パーティー攻撃しかできなくなるのでは?。
#--------------------------------------------------------------------------
# ● コマンド[攻撃]
#--------------------------------------------------------------------------
def command_attack
BattleManager.actor.input.set_attack
select_actor_selection 味方キャラ選択を追加
#select_enemy_selection ←敵キャラ選択はコメントアウト
end

選択は変わったが、実際にバトルが始まるとパーティアタックは行われなかったよ。

もう少し調査してみよう。

↓で敵キャラ決定の処理をしているらしい。
Scene_Battle.on_enemy_ok
#--------------------------------------------------------------------------
# ● 敵キャラ[決定]
#--------------------------------------------------------------------------
def on_enemy_ok
BattleManager.actor.input.target_index = @enemy_window.enemy.index
@enemy_window.hide
@skill_window.hide
@item_window.hide
next_command
end
※BattleManager.actorはGame_Actor
※BattleManager.actor.input はGame_Action


わかったこと
・アクションはGame_Actionで決定する。
・敵/味方を選択するウィンドでは敵/味方のIndexしか取得できない。敵か味方かはチェックしてない。


では、Game_Action.@target_indexが実際に操作されるのはどこだ?
調べてみる

↓敵に対するターゲットはここで決定する
Game_Action.targets_for_opponents

↓味方に対するターゲットはここで決定する
Game_Action.targets_for_friends

↓ここで敵味方を分けているっぽい
Game_Action.make_targets

↓となると仮説、以下にすれば戦闘中は味方しか戦えないはず
#--------------------------------------------------------------------------
# ● ターゲットの配列作成
#--------------------------------------------------------------------------
def make_targets
if !forcing && subject.confusion?
[confusion_target]
elsif item.for_opponent?
#targets_for_opponents←敵の選択判断をコメントアウト
targets_for_friends←味方の選択判断を追加
elsif item.for_friend?
targets_for_friends
else
[]
end
end

と思ったらエラーになった。
なぜだ。targets_for_friendsを調べてみる。
#--------------------------------------------------------------------------
# ● 味方に対するターゲット
#--------------------------------------------------------------------------
def targets_for_friends
if item.for_user? ← 使用者?
[subject]
elsif item.for_dead_friend? ← 戦闘不能の味方?
if item.for_one? ← 単体?
[friends_unit.smooth_dead_target(@target_index)]
else
friends_unit.dead_members
end
elsif item.for_friend? ← 味方?
if item.for_one? ← 単体?
[friends_unit.smooth_target(@target_index)]
else ← 全体
friends_unit.alive_members
end
end
end

[elsif item.for_friend?]で味方かどうか調べてる。
味方じゃないと判断したら、この関数はnilを戻すようになっとった。
↓じゃ、こうすればいいんじゃね。
#--------------------------------------------------------------------------
# ● 味方に対するターゲット
#--------------------------------------------------------------------------
def targets_for_friends
if item.for_user?
[subject]
elsif item.for_dead_friend?
if item.for_one?
[friends_unit.smooth_dead_target(@target_index)]
else
friends_unit.dead_members
end
else#if item.for_friend? ← コメントアウト
if item.for_one?
[friends_unit.smooth_target(@target_index)]
else
friends_unit.alive_members
end
end
end

想定通り、戦闘中全員味方を攻撃しだした。

ということで、パーティーアタックをするときは・・・・
1.Window選択で、敵、味方を選べるようにする。
2.選んだあとはGame_Actionに選んだのは味方であるか、敵であるかを記録する。
3.targets_for_opponents/targets_for_friendsでうまいことやる(←なんだよ、それ)


という感じで実装すればよいのだ。
[2014/08/09 18:43] | ペトリケーション2 | コメント(0)
俺的メモ
 何も効果がないスキルを実行すと「○○には効かなかった」というメッセージが出る。
 確かに何の効果も設定していないから、効かないのは理屈だが、スクリプト上では効果が出ているのでこのメッセージは困る。どうにかして回避したい。

 ということで以下で対応
・RGB::BaseItemを拡張してParamというパラメーターを作る。
・対象のスキルのメモに[(bool)NonAffterMessage?:true]を追加する。これはkey=(bool)NonAffterMessage?/value=trueという意味。
・起動時にすべてのスキル、アイテムをチェックして、メモの内容をハッシュに変換してParamへぶち込む。
・メッセージが出現する直前でParamのハッシュをチェックして「(bool)NonAffterMessage?」を持っており、かつ、中身がtrueであれば「○○に効果なかった」を表示しないようにする。

 上の仕組みを作れば、これ以降、メモにハッシュを書いて同様の操作ができるのだ。
 これは前にステートでもやった手です。

[2014/08/09 13:01] | ペトリケーション2 | コメント(0)
何とか実装できた
 いきなり問題発生。

 RPGツクールVXAceのアニメーションのグラフィックサイズは192*192である。
 一枚絵640*480のグラフィックは扱えないのであった。マジカヨー!

 スクリプトを見ると、192*192はエディター側の都合のようだ。
 つまり「RPGツクールVxAceでは使用可能」であるが、「エディターが編集不可能」というわけである。

 まあ、これは仕方がない。
 こちらで都合つけるしかない。

 ということで、以下のようにします。

・エディタ側でダミーのアニメーションを作る。
・アニメーション取得時にIDを確認して、ダミーであったら、独自のアニメーションクラスを生成する。

 データベースのアニメーションはRPG::Animationを実装するエディターである。
 同じことをスクリプトでガリガリ書いていけば作れるのである。

 スクリプトで直に書くメリットとしては、エディター側の制限なし。

 デメリットは、プレビューとかないから、動きはテスト戦闘で確認するしかない。
 あと、書き損じがあると、どこがバグっているのか調べるのに死ぬ。

 で、以下のように実装した。

●準備
・変身のスキルを追加する。何の効果もないスキルでメニュー表示用である。
・変身のステートを追加する。
・ダミーのアニメーションを追加する。
●実行時
 ・変身のスキルが発動すると、ダミーのアニメーションが呼ばれる。
 ・呼ばれたタイミングでダミーのアニメーションを、スクリプトで作成したアニメーションと挿げ替える。
 ・アニメーション呼ばれると同時に、ステータスを切り替える。
 ・アニメーション最初でフラッシュ。フラッシュが終わると変身したキャラ絵になる。
 というわけでできた。

 挿げ替え場所は今後も使いそうだから書いておこう。
・Sprite_Battler.setup_new_animation
・Sprite_Battler.animation_set_sprites
[2014/08/09 13:00] | ペトリケーション2 | コメント(0)
変身中にエフェクト
続いて「変身中にエフェクト」を行ってみよう。

俺の脳内では以下のようになっている。
・対象者が変身ボイスを叫ぶ。
・カットインが途中まで入る。
・ホワイトフラッシュを入れる。
・シャキーンと音が入るとよい。
・フラッシュが消えるとキャラのステータスが変更されている。
・カットインが消える。

 上はアニメーションでイケる気がする。
 2か所を除いて。つまり以下の部分はスクリプトで考えないといかんわけ
・フラッシュ中にステータスを変更する。
・裸の状態で変身したら、カットインも裸で。
 
まず、アニメーションがなんであるかから調べよう。
アニメーション、はるか昔に一回だけ作っただけだし。
[2014/08/08 12:20] | ペトリケーション2 | コメント(0)
変身中に画面上のグラフィックを変える
変身状態はステートで管理しよう。

ステートONで変身中
ステートOFFで変身解除だ。いいね!

戦闘中のグラフィックはどこで操作しているかというと、
Game_BattlerクラスのL32だ
------------------------
attr_reader :battler_name # 戦闘グラフィック ファイル名
------------------------

コメントにズバリ書いてある。Yes!

で、こいつを呼んでいるのが[Sprite_Battler.update_bitmap]だ。L54な。

だから、Game_Battlerクラスにbattler_imageFile関数とか作って、battler_nameの代わりに呼ぶようにしてやると、画像ファイルを差し替えることができる。

で、すでに我輩のスクリプトでは、[キャラクター名]フォルダ+[ステータスの状態]ファイル名で取得可能になっている。

今回はさらに変身要素を加えるには・・・・

・通常の場合は[キャラクター名]フォルダを参照する。
・変身中は[キャラクター名]+"EX"のフォルダを参照する。

という風に実装すればよい。

よし、決まった。後は実装、行ってみよう。
[2014/08/08 11:23] | ペトリケーション2 | コメント(0)
次のページ
牙行の色々やること


Maiki's House運営者牙行のブログです。

プロフィール

牙行

Author:牙行
ASFR & WAM を重点的に扱っています。いろいろなことに興味を持つゆえにフラフラしているダメ人間。
定型句ではありますが書いときます。
このブログにあるコンテンツの無断転載転用だめですよぉ。

pixiv

Twitter...

DLSite.com

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。