Пытаюсь сделать перемещение игрока по полю состоящий из шестигранных тайлов. Пользователь щелкает по полю и персонаж должен сдвигаться на один тайл в сторону щелчка. За каждый щелчок персонаж сдвигается и так до тех пор пока не достигнет своей цели. Персонаж при движении должен попасть в центр каждого тайла. Вот как примерно должно быть.
А вот как у меня получилось для наглядности я нарисовал кружки где при каждом щелчке располагается персонаж.
Вообщем игрок должен добраться до пункта назначения попадая именно не на пересечения, а в центр каждого тайла. Далее следует сам код, помогите пожалуйста исправить код, а то игрок попадает на пересечение при перемещении.
Код AS1/AS2:
var move = 0;
function hex_tile()
{
emx = 5;
emy = 5;
for(var i = 0; i < 7; i++)
{
for(var j = 0; j < 7; j++)
{
clip["h_"+i+"_"+j].onPress = onP;
}
}
clip.attachMovie("enemy", "enemy",clip.getNextHighestDepth());
clip["enemy"]._x = emx * 60 + 30 * (emy % 2);
clip["enemy"]._y = 30 * emy;
_root.onEnterFrame = function ()
{
var enemy = clip["enemy"];
enemy.xt = Math.floor(enemy._x / 60);
enemy.yt = Math.floor(enemy._y / 30);
if(move == 1)
{
if(tilex < clip["enemy"]._x)
{
if(ex - 60 + 30 * (enemy.yt % 2) != clip["enemy"]._x)
{
clip["enemy"]._x -= 5;
}
}
if(tilex > clip["enemy"]._x)
{
if(ex + 60 + 30 * (enemy.yt % 2) != clip["enemy"]._x)
{
clip["enemy"]._x += 5;
}
}
if(tiley < clip["enemy"]._y)
{
if(ey - 30 != clip["enemy"]._y)
{
clip["enemy"]._y -= 5;
}
}
if(tiley > clip["enemy"]._y)
{
if(ey + 30 != clip["enemy"]._y)
{
clip["enemy"]._y += 5;
}
}
}
}
}
function onP()
{
move = 1;
tilex = this._x;
tiley = this._y;
ex = clip["enemy"]._x;
ey = clip["enemy"]._y;
}
hex_tile();
На всякий случай вот еще исходники.
src.rar