敵がたくさんのタイルを攻撃していて、ループを介して、敵がそれらを攻撃しているかどうかをすべてのタイルをチェックします。私はそれらを追跡し、それが本当か嘘かを教えてくれる人もいます。敵に真のものからランダムに選択させ、それらのタイルに移動できるようにしたい. 敵と接触しているすべてのタイルをトレースしますが、問題は、true として登録されているタイルを独自の配列に取得し、敵をそれらのタイルにランダムに移動させる方法がわからないことです。
for (var j:int = 0; j < tileset.length; j++){
trace(tileset[j].currentFrameLabel, tileset[j].hitTestObject(enemy));
if (tileset[j].hitTestObject(enemy) && !tileset[j].hitTestObject(player)){
options.push(Boolean(true));
}
編集: これが私のタイマー機能です。5 秒ごとに、敵を利用可能なタイルに移動させます。tileset は見えませんが、for ループ自体にあるタイルであるムービークリップと等しい配列です。つまり、基本的にタイルセットはタイルの 49 個のムービー クリップです。オプションである別の配列にそれらの利用可能なタイルをプッシュしました。次に、カウンターとなる energyPick という var を作成します。それは私がどれくらい離れているかです。
function timerenemy (event:TimerEvent) {
var options:Array = [];
for (var j:int = 0; j < tileset.length; j++){
if (tileset[j].hitTestObject(enemy) && ! tileset[j].tileMiddle.hitTestObject(player)) {
//trace(tileset[j].currentFrameLabel, tileset[j].hitTestObject(enemy));
tileset[j].outline.gotoAndStop("attack");
options.push(tileset[j]);
}
if (options.length > 0){
var enemyPick:int = Math.floor(Math.random()*options.length)
}
}
trace(enemyPick, options);
}