PDA

Просмотр полной версии : Перемещение игрока по шестигранному полю


Alexey25
30.07.2016, 04:10
Пытаюсь сделать перемещение игрока по полю состоящий из шестигранных тайлов. Пользователь щелкает по полю и персонаж должен сдвигаться на один тайл в сторону щелчка. За каждый щелчок персонаж сдвигается и так до тех пор пока не достигнет своей цели. Персонаж при движении должен попасть в центр каждого тайла. Вот как примерно должно быть.

32273

А вот как у меня получилось для наглядности я нарисовал кружки где при каждом щелчке располагается персонаж.

32274

Вообщем игрок должен добраться до пункта назначения попадая именно не на пересечения, а в центр каждого тайла. Далее следует сам код, помогите пожалуйста исправить код, а то игрок попадает на пересечение при перемещении.


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();

На всякий случай вот еще исходники.
32275

dark256
30.07.2016, 19:51
Попробую помочь в решении проблемы без кодинга и даже без слов ;)

32277
32278
32279

dark256
30.07.2016, 19:52
Не то наскриншотил...
Лень переделывать. Короче. Крестик - это ЦЕНТР клипа. Откройте ваш клип с гексом и отцентрируйте его.

Alexey25
31.07.2016, 12:42
Вообще то у меня они уже и так в центре находятся.
http://vagon-igr.ru/img/31-07-2016/hex.jpg

dark256
01.08.2016, 21:43
Вообще-то тогда исходник имело бы смысл выложить.

EndoCrinologist
23.08.2016, 17:13
Есть только идея - искать ближайшие перпендикулярные центры гексагонов, через которые проходит красная линия