Top | Download Game | Browser Game | About |
RPGツクールVX Ace のお話です。
今日は、便利なスクリプトを忘れないように書き記しておこうと思います。
イベントコマンドの変数の操作や、条件分岐のスクリプト欄に使えるものです。
(※スクリプトの本体が変更されていない、デフォルトの状態であることが前提です)
他にもこんな便利な条件や変数があるよっていう情報お待ちしています!
ご利用になる場合は、引用先の利用条件に従ってください。
まず、SILENT ANGEL さんちにあるXP用の条件スクリプトのうち
Aceでもそのまま使えるものです。
(掲載していないものは未検証です。ぜひSILENT ANGEL さんちに行ってみましょう)
# プレイヤーが移動中の場合(イベントコマンドで移動しているときも判定してくれる)
$game_player.moving?
# アクター2がスキルを4つ覚えている場合(== 4をとれば、変数の取得時にも使える)
$game_actors[2].skills.size == 4
# セーブ禁止の場合
$game_system.save_disabled
# このマップのイベント11番のセルフスイッチBがオンのとき
#([]のなかは左からマップID,イベント番号,"スイッチ"です)
$game_self_switches[[@map_id,11,"B" ]] == true
# 主人公のX座標が10でY座標が20の場合(条件はandでつなげるんだね!)
$game_player.x == 10 and $game_player.y == 20
# 変数1が2以上5未満の場合
$game_variables[1] >= 2 and $game_variables[1] < 5
# 変数1が奇数のとき
$game_variables[1] % 2 == 1
#変数1が1で変数2が1の時
$game_variables[1] == 1 and $game_variables[2] == 1
# 変数1×変数2=5未満の場合
#(計算式だけど条件として使う場合は、変数1と2の数が変更されない)
$game_variables[1] * $game_variables[2] < 5
以下は、検証の結果Aceと仕様が合わなかったものを
半生さんのご助力により、使用できるようになったものです。
# ID1番のアイテムの所持数が2つ以上のとき
$game_party.item_number($data_items[1]) >= 2
#装備中のを除く所持武器が1以上の時(防具はdata_armors
$game_party.item_number($data_weapons[1]) >= 1
#パーティの誰かが武器1を装備してるか
$game_party.members_equip_include?( $data_weapons[1])
#アクター3が防具12を装備してるか
$game_actor.equips.include?(item)
# この戦闘が逃走可能な戦闘の場合
BattleManager.can_escape?
以下は、FSMさんの掲示板から。
#n番のアクターが先頭の場合
$game_party.members[0].id == n
以下は、GOREとにゃんこの桃源郷さんのブログから。
#アクターID1のアクターがパーティに居て、尚且つ生存している場合
$game_party.alive_members.include?($game_actors[1])
-----------------------------------------------------------------------
以下は、変数に代入できるスクリプトです。
# 1番目のアクターが何番目にいるかを代入。1番目にいたら0が代入される。(半生さんより)
$game_actors[1].index || -1
# 変数に文字列を代入する。""で囲むと文字列になる。(FSMさんの掲示板より)
$game_variables[n]="文字列"
-------------------------------------------------------------------------
以下は、移動ルートの設定で使えるスクリプトです。(FSMさんの掲示板より)
# アニメーション1を表示
@animation_id = 1
# 主人公へアニメーション1を表示
$game_player.animation_id = 1
# イベント1へアニメーション2を表示
$game_map.events[1].animation_id = 2
---------------------------------------------------------------------------
以下はイベントコマンドの最後尾にあるスクリプトで使えるものです。
(FSMさんの掲示板より)
# デフォルトのアイテム画面を表示 (他の画面もシーン名を変えれば可能)
SceneManager.call(Scene_Item)
おしまい。
ゲーム製作に活かしたいと思います。
情報のご提供及びアドバイスくださった方々に感謝をこめて。
ありがとうございます!!
そろそろ雲行きが怪しくなってまいりました。
この先は思いつきでやってみたら出来たからいいよね、っていう怪しい講座です。
なにせ初心者のやることですから、上級者から見ると
なんちゅうことやってますのんやっていう可能性も多々あることでしょう。
もし、こうした方が効率いいよとかありましたら、ご教授願えれば助かります。
というわけで、今回は壊せるブロックと下方向へすり抜ける床です。
今回は、変数とフラグを使います。
予習してきましたか?
変数やフラグは、条件に使います。
フラグは有効か無効しかありませんが、変数は計算式も使えます。
<2014/03/13追記及び改変>
「ジャンプとはしご」を使った場合は
容易にアクティブオブジェクトの上に乗れる事がわかったので
「壊せるブロックの作り方」の内容を変更しました。
古い方は、「ジャンプとはしご」を使わずに作るときの方法でした。
-----------------------------------------
壊せるブロックを作る
①壊せるブロック用のアクティブオブジェクトを作成。
アクションポイントは真ん中に。
②壊したとき飛び散る破片用オブジェクトを作成。
壊せるブロックから発射された後の動作を
イベントエディタか、オブジェクトイベントで指定。
(今回は、オブジェクトイベントに記入しています)
③イベントエディタか、オブジェクトイベントを開き
アタリ判定とブロックのが衝突した時と、さらに
同じ行に条件として、アタリ判定の位置のY座標が
ブロックの下のY座標以上の時を設定。
(条件の概要:壊れるブロックに接触した時、ブロックより下にいた)
オブジェクトの位置データを取得するには
計算式のダイアログが表示された時に
「オブジェクトからデータを抽出」をクリック。
「壊れるブロック」⇒「位置」⇒「下端のY座標」を選択。
壊れるブロックと交差するマスに、破片オブジェクトの発射命令と
オブジェクトの破壊命令を入れる。
④新しい条件をクリックし、壊れるブロックと衝突したときを指定。
壊れるブロックと交差するマスに動作の「停止」を入れる。
このブロックを複数配置したい場合は
オブジェクトを「複製」するだけでOK。
-----------------------------------------
動く床を作る
アクティブオブジェクトに乗ればよいだけので
後は好きなように、オブジェクトを動かせばよろしいですね。
必要な命令は↓コレだけです。
-----------------------------------------
下へすり抜けるブロックを作る
①アクティブオブジェクトを新規作成し、編集で任意の画像に。
「開始時に表示」のチェックを外しておく。
すり抜けたいブロックの上部に配置。(重ねないよ)
②イベントエディタを開く。
条件に、「すり抜け床下用オブジェクトとアタリ判定が重なった時」
と、「移動キー 下 が押された時」を指定。
アタリ判定と交差するマスで、「フラグ」→「有効に設定」
番号は任意でよいが、今回は「0」番で。
③新しい条件を右クリックし「変数」→「フラグ」の順に選択
「内部フラグ0が有効の時」を条件に指定。
アタリ判定と交差するマスで、アタリ判定の位置を任意の数字分
下へ移動させる命令を入れる。
同じマスに、「変数」→「増加する」で「変数A」を先ほどの
任意の数字分追加する。
④新しい条件を右クリック、アタリ判定の「変数A」が
移動させたい距離(1ブロックならアタリ判定の大きさ分)以上に指定。
アタリ判定と交差するマスで、内部フラグ0を無効にし
変数Aを0に戻しておく。
⑤講座の一番最初に設定した
「背景とアタリ判定が接触したら、停止する」命令の行で
条件に「アタリ判定の内部フラグ0が無効の時」を追加。
複数配置したい場合は、オブジェクトを「複製」するだけでOK。
★今日の講座のサンプルをダウンロード★
いかがでしょうか。
変数やフラグが出てきたので、ちょっと難しくなりましたね。
というわけで、この講座の内容を使えば
このようなゲームもサクサク作れちゃうわけですね。
そんなわけで、講座は一応終わりです。
え、敵の作り方ですか?
ここまでできれば、もうどうすればよいかはわかるはず。
あなたならできる!
ていうわけで、頑張ってくださいね!
今回は、画面のスクロールと画面の端に来たときの処理です。
この先は、他にも色々なやり方がありますが
一番簡単だなーと思うものを紹介していきますね。
まず、キャラクターの移動にあわせて、画面をスクロールさせる方法から。
①プロジェクトのプロパティ「ウインドウ」タブを開き
ゲーム画面のサイズを任意の大きさに指定する。
ここで決めたサイズが動作領域のサイズになります。
親フレームというのは
②ステージ用フレームのプロパティの「設定」にある「サイズ」を
任意の大きさに指定する。
③イベントエディタを開き、新しい条件「常に実行」を指定。
ストーリーボードと交差するマスを右クリックし
「スクローリング」から「全方向にスクロール」を選択。
「関連」にチェックし、アタリ判定用オブジェクトを選択。
以上、簡単ですね。
強制スクロールにしたい場合は、キャラに合わせるのではなく
X、Y座標を変数やカウンターオブジェクトの数値で指定する等が考えられます。
次は、画面(動作領域)の左右の端に来たら、それ以上進めなくする方法。
イベントエディタを開き、新しい条件をクリック。
アタリ判定を右クリックし、「位置」→「位置を判定」
の順に選び、方向を選択。
アタリ判定オジュジェクトと交差するマスに、「停止」を指定。
端っこではなく、特定の座標に来たときにしたいという場合は少し複雑ですが
現在の位置を変数などに取得して、比較するなどが考えられます。
最後に、画面から下の端に来たら、開始位置に戻る方法。
イベントエディタを開き、新しい条件に「位置を判定」
で、任意の方向を選択。
アタリ判定と交差するマスに、「破壊」を指定。
「新規オブジェクトを作成」と交差するマスを右クリック。
「アタリ判定」を選択し、座標を指定する。
単純に、アタリ判定オジュジェクトの位置を変更するだけでも良いのですが
「はしご」に接触している状態で位置を変更すると、少し問題が発生するので
ややこしいけれど、こちらの方法がおすすめです。
(はしごから離れているのに、はしごに接触したままの状態になり
向きやアニメーションが変えられない他、重力も働きません)
ライフも減らしたい・・・という方は、チュートリアルブロック崩しを参照してください。
★今回の講座のサンプルをダウンロード★
参考になる動画を見る(Mr.Grotesque さんの講座動画です)
次回は・・・壊せるブロック、上から下へすり抜けられるブロックの作り方です。
オブジェクトのフラグや変数を使うので、予習しておいてね。(グローバル変数は使いません)
予習になる動画を見る(Mr.Grotesque さんの講座動画です)
はい、講座第2回目のは「アタリ判定」です。
前回はポニーテールなどが、背景に引っかかってしまいました。
それを回避するもっとも単純な方法は
プロパティの「ランタイムオブション」にある
「ファイン判定を使う」のチェックを外すことです。
が、これだと当たり判定が画像の見えない部分にまで及んでしまいます。
なので、今回は
「当たり判定用のオブジェクト」と「グラフィック用オブジェクト」を
分けて作成し、2つの動きを合せる方法を使うことにします。
第1回で使用したキャラクターのグラフィックはアタリ判定にかぶせるので
「カバー」と呼ぶことにします。
←カバー
カバーに合せて、当たり判定用のグラフィックを作ります。
←アタリ判定用画像(緑の部分は透明にします)
アタリ判定の動きに合せて
カバーのアニメーションが変わると考えてもらうと良いです。
アタリ判定が右を向けば、カバーも右を向く。
アタリ判定がジャンプすれば、カバーもジャンプ。
というわけです。
では、設定の方法を説明します。
①当たり判定用にアクティブオブジェクトを新規作成しアニメを編集。
使用するアニメーションの種類、方向すべて入力。
方向オプションの「ループ」にチェック。
アクションポイント、ホットスポットを
カバー用のオブジェクトと合わせておく。
②当たり判定用のオブジェクトの「動作」タブを開き
「ジャンプとはしご」に指定。
必要な処理を済ませる。
カバー用のオブジェクトは「静止」にしておきます。
③イベントエディタで、アタリ判定とカバーを同期させる
命令を入れる。
※アタリ判定と、カバー画像の大きさ等が違う場合
位置を指定する時にその分の座標を足したり引いたりする必要があります。
④このまま実行すると、アタリ判定とカバーが一緒に表示されます。
←こんな具合に(表示順序はオブジェクトの作成順によって変わります)
なので、アタリ判定のプロパティ「表示オプション」
を開き「開始時に表示」のチェックを外して、隠します。
(表示されなくなるけど、存在はしています)
以上です。
なれた人は、アタリ判定をもっと増やして
足元用、頭用、攻撃用、敵との当たり判定用・・・など
複数を使い分けるみたいです。
★今回の動作サンプルをダウンロード★
亀の歩みで進む、初心者による制作講座。
次回は、画面のスクロールと動作領域の外に出た(画面から消えた)
時の処理についてです。