お久しぶりです。
今回は久々ですが、ツクールテクニックについてです。
ツクール2000などを使って、アクションRPGを作りたいと言うときに、攻撃の判定は一つの課題です。今回は、筆者的な作り方をご紹介します。
使うのはツクール2003
まず、マップに敵となるイベントを配置します。今回はev1ev2はマップ進入時の処理、ev3が敵となります。
複数個設置していますが、ev0003となっているのがミソです。戦闘用マップでは必ずev0003が何かしらの敵であることが求められます。
敵の中身です。ページが切り替わり、4ページ目が敵を倒した時の設定です。
次にコモンイベントを開きます。
ここで、敵1、つまりev0003のイベントとしての座標をとります。
変数の操作から、変数を開き、ev0003のx座標の取得、ev0003のy座標の取得を入れます。
ちなみに、この時ev0003の配置されていないマップでは条件スイッチが設定されて起動しないようにていないとエラーを吐いてゲームが止まってしまいます。
マップに入ったときにスイッチをon町に入ったときにスイッチをoffにする必要があります。
また、主人公の座標も同じようにx,yそれぞれ変数で取得します。
ここでは1マップの敵の上限は4体で、それぞれx,yの座標を変数で取得しています。
変数の取得ができたら、主人公の座標に左上をx=0,y=0 (0,0)として上に行けば減算、左に行けば減算することで、新たに攻撃する主人公の2マス正面、主人公の向きに対し主人公の右側と左側1マスの座標を計算させます。
例えば、左向きなら、xの始まりが減算2で主人公の2マス前、xの終わりは主人公の座標なので数値は加算も減算もしない。yの始まりは減算1で上に1マス、yの終わりは加算1で下に1マス。
□□□x
□□主x
□□□x
このような判定になります。
この判定はev0003が、終了位置≧敵x≧開始位置、終了位置≧敵y≧開始位置を判定することでその条件にすべて当てはまれば、みごと下の書き方ではev0003がダメージを受け主人公から逃げるようにすることができます。
以上で簡単ですが、説明は終わりです。
応用で、x座標ではなく、画面座標を取得することもできます、
取得した後の処理は全く同じです。
画面xyの項目があるので、それが対応しています。
画面座標の場合は、ドット単位で座標を取得するため、より精密なプログラムが可能です。故に、イベントのxy座標よりも計算する値が大きくなります。因みに、1キャラクター、1マップチップあたりのドットはx=32,y=32なので、最初に使った上記の1マスで判定する場合は開始位置を32、終了位置を0或いは後ろに判定して32とすれば可能です。そして、重要なのは条件分岐を画面x,yで判定することです。
少し書き方がややこしいですが、このように敵の座標取得と判定を行います。
かなり力技な部類ですが、ご興味があれば。記憶だとツクールxpまではこの方法は使うことが可能です。
実際はツクールもプログラミングをわかりやすく可視化して、一つ一つのツールを組み込んでいるものなので、本来処理を分けず、一つのイベントや顧問イベントに直線的にすべて記述するほうが良いようですが、数年前の筆者の技量はこのくらいということで。
では、皆さんもよいツクールライフを。
ちなみにBLUEWIND_GRAYASHでは今のところ転用をしてもいいということでツクール作品などを配信しています。ご興味のある方はツクールで開けて今回の説明と併せてお使いください。
では。
以上。
参照url: