| > ここから本題なのですが識属性でマップ兵器を撃ち(今回はM直です)射程内に攻撃したユニットと同軍のユニットがいるかを調べるにはどうしたらいいでしょうか?
撃ったM直武装の"範囲内"に同軍のユニットが存在するかどうか。ですよね? もし言葉通り"射程内"ということでしたら割と簡単に出来そうですが、"範囲内"となると難しいです… ですがM直限定ということなら、少々強引な方法ですが可能だと思います。
まず、あらかじめM直の武装を持つユニットに、『M直の武装と全く同じ武装』を持たせ、"M直"と"識"を"M投L0"に変えて使用不能にしておきます。 )例 火炎, 1000, 1, 6, +10, -, 40, 100, AACA, +0, 火M直識 火炎(イベント用), 1000, 1, 6, +10, -, 40, 100, AACA, +0, 火M投L0(使用不能) 【攻撃】や【使用】ラベルを使って、M直武装を撃ったユニット(対象ユニット)と撃たれた ユニット(相手ユニット)の座標を調べます。(関数【X】【Y】を使用してください) ※この際、"一番近い敵"が相手ユニットになっていると思います。 両者のX座標が同じならY座標、Y座標が同じならX座標を取り出し、撃ったユニットに近いほうから順にユニットが存在するかを調べます。 )例 対象ユニット座標が(5,5)、相手ユニット座標が(1,5)なら (4,5)→(3,5)→(2,5)の順に、ユニットが存在するか調べる。 ユニットが存在するならM直の攻撃をCancelし、MapAttackコマンドでM投L0の攻撃を途中の座標にいたユニットに対して撃たせます。 存在しないなら、MapAttackコマンドでM投L0の攻撃を相手ユニットに対して撃たせます。 撃たれたユニットの名前を参照すれば火炎入道のレベルアップも出来ますし、撃たれたユニットが生存しているかを参照すれば、ドラゴンのレベルアップも出来ると思います。
これで一応、『貫通せず味方にも当たる』と思います。 実際にこのサブルーチンを組むのは結構大変なので、動作確認はしていませんが… 組み方でわからないことが有ったり、うまく動かなかったりしたらまた聞いてください。 可能な限りお答えしますので。
|