Чтобы сделать вещи быстрыми, у меня есть расположение плиток, на которых находится игрок и враг.Враг перемещается случайным образом
public static var floor1:Array = new Array(7);
floor1[0] = [0,1,1,1,1,1,0];
floor1[1] = [1,1,1,1,1,1,1];
floor1[2] = [1,1,1,0,1,1,1];
floor1[3] = [1,1,0,0,0,1,1];
floor1[4] = [1,1,1,0,1,1,1];
floor1[5] = [1,1,1,1,1,1,1];
floor1[6] = [0,1,1,1,1,1,0];
public function Main()
{
var tilew:int = 60;
var tileh:int = 60;
for (var i:int=0; i<floor1.length; i++)
{
for (var u:int=0; u<floor1[i].length; u++)
{
var cell:MovieClip = new Tile();
cell.gotoAndStop(floor1[i][u]);
cell.x = ((u-i)*tileh);
cell.y = ((u+i)*tilew/2);
addChild(cell);
cell.addEventListener(MouseEvent.ROLL_OVER, mouseover);
cell.addEventListener(MouseEvent.ROLL_OUT, mouseout);
cell.addEventListener(MouseEvent.CLICK, mouseclick);
cell.addEventListener(Event.ENTER_FRAME, beginfloor1);
}
}
var player:Player = new Player();
addChild(player);
player.mouseEnabled = false;
player.x = 5 * (tileh);
player.y = 5 * (tilew/2);
var enemy:Enemy = new Enemy();
addChild(enemy);
enemy.mouseEnabled = false;
enemy.x = 9 * (tileh);
enemy.y = 9 * (tileh/2);
Моя цель состоит в том, чтобы враг перемещался случайным образом на плитки в своем диапазоне. То, что я сделал, это создать квадратную графику под названием enemyVisionArea, которая проверяет, какая плитка поражает врага, который в основном окружает плитки.
У меня есть функция таймера, которая говорит врагу двигаться каждые 5 секунд, если игрок не находится рядом с ним, и если он рядом с доступной плиткой.
function timerenemy (event:TimerEvent){
if (enemy.enemyVisionArea.hitTestObject(enemyMover) && !player.visionPoint.hitTestObject(enemyMover.tileMiddle))
{
enemy.x = (enemyMover.x)+55;
enemy.y = (enemyMover.y)+20;
trace("moved");
}
}
enemyMover - переменная, которую я сделал равной элементам плитки.
function beginfloor1(event:Event)
{
enemyMover = event.currentTarget as Tile;
}
Он просто остается там, где он есть. Я просто хочу, чтобы противник двигался самостоятельно на любой плитке, которую атакует его врагVisionArea. Просматривая соседнюю плитку. Функция beginfloor1, похоже, не работает. Есть ли способ, я могу объявить врагМоер = event.currentTarget как Плитка и враг двигаться на случайной плитки, что его врагVisionArea hitTesting?
Если это сбивает с толку, я могу опубликовать полный код.
Спасибо за ваш ответ. Имеет смысл заменить вражеский массив массивом, так как он больше 1 плитки. Что касается переменной массива psuedo tileset, я бы получил ее равной массиву переменных floor1? – Bindlestick
'floor1' - это всего лишь набор индексов, в то время как вам нужен соответствующий объект' Tile' для ссылки. Но, используя 'floor1' вместе с набором тайлов, вы сможете отфильтровать невостребованные плитки. – Vesper
Как бы у меня был плиточный набор, равный объекту Tile? Я попытался назначить это раньше, и он говорит, что массивы не могут равняться MovieClips – Bindlestick