Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 30.07.2016, 04:10
Alexey25 вне форума Посмотреть профиль Отправить личное сообщение для Alexey25 Найти все сообщения от Alexey25
  № 1  
Ответить с цитированием
Alexey25

Регистрация: Mar 2016
Сообщений: 34
По умолчанию Перемещение игрока по шестигранному полю

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

Название: hex1.jpg
Просмотров: 317

Размер: 41.0 Кб

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

Название: hex2.jpg
Просмотров: 297

Размер: 42.0 Кб

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

Код 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

Создать новую тему   Часовой пояс GMT +4, время: 12:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.