RPGツクール2000/システム
■目標地点を矢印で表示
(更新:2007/05/26)


目標地点のマスを矢印で示すシステムを作成します。



▼目標地点がゲーム画面の外にある場合は、
 目標地点の方向へ矢印を表示します。





☆画像の準備
8方向の矢印の画像を用意して、素材管理Pictureにインポートしてください。


   


 ※左の画像は2倍に拡大して表示しています。
  実際にはもっと小さい画像です。


 【左の画像をまとめてダウンロードする】



☆矢印表示の設定
目標地点を表示する矢印は、ゲーム画面上の目標地点が表示されている場合は、
の矢印を目標地点の上に表示して、目標地点を示します。

目標地点がゲーム画面の外にある場合は、
変数[0005:矢印表示種類]へ表示する矢印の種類を設定します。
変数[0005:矢印表示種類]の値の設定は、以下の通りに設定します。
目標のX座標が主人公より-10以下:変数の値「+1」
目標のX座標が主人公より+11以上:変数の値「+2」
目標のY座標が主人公より-7以下:変数の値「+3」
目標のY座標が主人公より+8以上:変数の値「+6」

この場合、目標地点が左下にある場合は、変数には「+1」と「+6」が設定され、
変数[0005:矢印表示種類]には「7」が設定されます。



☆イベントの作成
目標地点にマップイベントを設定してください。
※目標地点のマップイベントの設定はどんな設定でも構いません。

目標地点のマップイベントとは別に、
矢印を表示するためのマップイベントを設定してください。
この矢印を表示するイベントは、以下の通りに設定します。

■マップイベント
イベント開始条件:定期的に並列処理する
◆変数の操作:[0001:X座標]代入,目標のイベントのX座標
◆変数の操作:[0002:Y座標]代入,目標のイベントのY座標
◆変数の操作:[0001:X座標]減算,主人公のX座標<減算する事で主人公との距離を出します
◆変数の操作:[0002:Y座標]減算,主人公のY座標<減算する事で主人公との距離を出します
◆変数の操作:[0003:表示X]代入,目標のイベントの画面X
◆変数の操作:[0004:表示Y]代入,目標のイベントの画面Y
◆変数の操作:[0004:表示Y]減算,8<矢印がマスの中央へ来るように調整
◆条件分岐:変数[0001:X座標]が-10以下(オプション:ON)<目標地点がゲーム画面の左外にある
 ◆変数の操作:[0003:表示X]代入,8<ゲーム画面の一番左に矢印を表示する
 ◆変数の操作:[0005:矢印表示種類]代入,1
 ◆
:それ以外の場合<目標地点はゲーム画面より左にはない
 ◆条件分岐:変数[0001:X座標]が11以上(オプション:ON)<目標地点がゲーム画面の右外にある
  ◆変数の操作:[0003:表示X]代入,312<ゲーム画面の一番右に矢印を表示する
  ◆変数の操作:[0005:矢印表示種類]代入,2
  ◆
 :それ以外の場合<目標地点がゲーム画面内にある
  ◆変数の操作:[0005:矢印表示種類]代入,0
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0002:Y座標]が-7以下(オプション:ON)<目標地点がゲーム画面の上外にある
 ◆変数の操作:[0004:表示Y]代入,8<ゲーム画面の一番上に矢印を表示する
 ◆変数の操作:[0005:矢印表示種類]加算,3
 ◆
:それ以外の場合<目標地点はゲーム画面より上にはない
 ◆条件分岐:変数[0002:Y座標]が8以上<目標地点がゲーム画面の下外にある
  ◆変数の操作:[0004:表示Y]代入,232<ゲーム画面の一番下に矢印を表示する
  ◆変数の操作:[0005:矢印表示種類]加算,6
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0005:矢印表示種類]が0<ゲーム画面内に目標地点がある
 ◆変数の操作:[0004:表示Y]減算,16<目標の上に矢印が表示されるようにします
 ◆変数の操作:[0005:矢印表示種類]代入,6の矢印を表示するようにします
 ◆
:分岐終了
◆条件分岐:変数[0006:前の矢印]がV[0005]以外<別の矢印を表示する
 ◆変数の操作:[0006:前の矢印]代入,変数[0005]の値
 ◆条件分岐:変数[0005:矢印表示種類]が1
  ◆ピクチャーの表示:1,左の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が2
  ◆ピクチャーの表示:1,右の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が3
  ◆ピクチャーの表示:1,上の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が4
  ◆ピクチャーの表示:1,左上の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が5
  ◆ピクチャーの表示:1,右上の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が6
  ◆ピクチャーの表示:1,下の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が7
  ◆ピクチャーの表示:1,左下の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が8
  ◆ピクチャーの表示:1,右下の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆
:分岐終了
◆ピクチャーの移動:1,(V[0003],V[0004]),0.0秒


以上で設定完了です。

※別のマップから移動して来る時には、
 ◆変数の操作:[0006:前の矢印]代入,0
 を実行してください。




☆マップのループに対応させる
上の設定では、マップのループには対応していません。
もしもマップのループに対応させる場合は、以下の設定を追加する必要があります。

目標地点のマップイベントはそのままでも良いですが、
矢印を表示するためのマップイベントは、マップの右下のマスへ設定してください。

■マップイベント
イベント開始条件:定期的に並列処理する
◆変数の操作:[0001:X座標]代入,目標のイベントのX座標
◆変数の操作:[0002:Y座標]代入,目標のイベントのY座標
◆変数の操作:[0001:X座標]減算,主人公のX座標
◆変数の操作:[0002:Y座標]減算,主人公のY座標
◆変数の操作:[0007:マップの幅X]代入,このイベントのX座標
◆変数の操作:[0008:マップの幅Y]代入,このイベントのY座標
◆変数の操作:[0007〜0008]加算,1
◆変数の操作:[0009〜0010]代入,変数[0001]の値
◆条件分岐:変数[0009:ループ:代入]が-1以下<主人公より左に居る場合
 ◆変数の操作:[0009〜0010]加算,変数[0007]の値
 ◆変数の操作:[0010:ループ:比較]乗算,-1
 ◆条件分岐:変数[0010:ループ:比較]がV[0001]以上<ループした方が主人公に近い場合
  ◆変数の操作:[0001:X座標]代入,変数[0009]の値
  ◆
 :分岐終了
 ◆
:それ以外の場合<主人公と同じX位置か、主人公より右に居る場合
 ◆変数の操作:[0009〜0010]減算,変数[0007]の値
 ◆変数の操作:[0010:ループ:比較]乗算,-1
 ◆条件分岐:変数[0010:ループ:比較]がV[0001]以下<ループした方が主人公に近い場合
  ◆変数の操作:[0001:X座標]代入,変数[0009]の値
  ◆
 :分岐終了
 ◆
:分岐終了
◆変数の操作:[0009〜0010]代入,変数[0002]の値
◆条件分岐:変数[0009:ループ:代入]が-1以下<主人公より上に居る場合
 ◆変数の操作:[0009〜0010]加算,変数[0008]の値
 ◆変数の操作:[0010:ループ:比較]乗算,-1
 ◆条件分岐:変数[0010:ループ:比較]がV[0002]以上<ループした方が主人公に近い場合
  ◆変数の操作:[0002:Y座標]代入,変数[0009]の値
  ◆
 :分岐終了
 ◆
:それ以外の場合<主人公と同じY位置か、主人公より下に居る場合
 ◆変数の操作:[0009〜0010]減算,変数[0008]の値
 ◆変数の操作:[0010:ループ:比較]乗算,-1
 ◆条件分岐:変数[0010:ループ:比較]がV[0002]以下<ループした方が主人公に近い場合
  ◆変数の操作:[0002:Y座標]代入,変数[0009]の値
  ◆
 :分岐終了
 ◆
:分岐終了

◆変数の操作:[0003:表示X]代入,目標のイベントの画面X
◆変数の操作:[0004:表示Y]代入,目標のイベントの画面Y
◆変数の操作:[0004:表示Y]減算,8
◆条件分岐:変数[0001:X座標]が-10以下
 ◆変数の操作:[0003:表示X]代入,8
 ◆変数の操作:[0005:矢印表示種類]代入,1
 ◆
:それ以外の場合
 ◆条件分岐:変数[0001:X座標]が11以上
  ◆変数の操作:[0003:表示X]代入,312
  ◆変数の操作:[0005:矢印表示種類]代入,2
  ◆
 :それ以外の場合
  ◆変数の操作:[0005:矢印表示種類]代入,0
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0002:Y座標]が-7以下
 ◆変数の操作:[0004:表示Y]代入,8
 ◆変数の操作:[0005:矢印表示種類]加算,3
 ◆
:それ以外の場合
 ◆条件分岐:変数[0002:Y座標]が8以上
  ◆変数の操作:[0004:表示Y]代入,232
  ◆変数の操作:[0005:矢印表示種類]加算,6
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0005:矢印表示種類]が0
 ◆変数の操作:[0004:表示Y]減算,16
 ◆変数の操作:[0005:矢印表示種類]代入,6
 ◆
:分岐終了
◆条件分岐:変数[0006:前の矢印]がV[0005]以外
 ◆変数の操作:[0006:前の矢印]代入,変数[0005]の値
 ◆条件分岐:変数[0005:矢印表示種類]が1
  ◆ピクチャーの表示:1,左の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が2
  ◆ピクチャーの表示:1,右の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が3
  ◆ピクチャーの表示:1,上の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が4
  ◆ピクチャーの表示:1,左上の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が5
  ◆ピクチャーの表示:1,右上の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が6
  ◆ピクチャーの表示:1,下の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が7
  ◆ピクチャーの表示:1,左下の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆条件分岐:変数[0005:矢印表示種類]が8
  ◆ピクチャーの表示:1,右下の矢印,(V[0003],V[0004])
  ◆
 :分岐終了
 ◆
:分岐終了
◆ピクチャーの移動:1,(V[0003],V[0004]),0.0秒


以上で設定完了です。

※マップイベントがマップの右下へ置けない場合は、
 ◆変数の操作:[0007:マップの幅X]代入,このイベントのX座標
 ◆変数の操作:[0008:マップの幅Y]代入,このイベントのY座標
 ◆変数の操作:[0007〜0008]加算,1

 の設定を、マップのXマス=100マス、Yマス=60マスの場合は、
 ◆変数の操作:[0007:マップの幅X]代入,100
 ◆変数の操作:[0008:マップの幅Y]代入,60

 とマップの幅の数値を定数として設定してください。



YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール