Форум 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
Просмотров: 307

Размер: 41.0 Кб

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

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

Размер: 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

Старый 30.07.2016, 19:51
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Попробую помочь в решении проблемы без кодинга и даже без слов

Нажмите на изображение для увеличения
Название: Screenshot_2.jpg
Просмотров: 50
Размер:	42.7 Кб
ID:	32277
Нажмите на изображение для увеличения
Название: Screenshot_3.jpg
Просмотров: 47
Размер:	28.8 Кб
ID:	32278
Название: Screenshot_4.jpg
Просмотров: 212

Размер: 8.9 Кб
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 30.07.2016, 19:52
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 3  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Не то наскриншотил...
Лень переделывать. Короче. Крестик - это ЦЕНТР клипа. Откройте ваш клип с гексом и отцентрируйте его.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 31.07.2016, 12:42
Alexey25 вне форума Посмотреть профиль Отправить личное сообщение для Alexey25 Найти все сообщения от Alexey25
  № 4  
Ответить с цитированием
Alexey25

Регистрация: Mar 2016
Сообщений: 34
Вообще то у меня они уже и так в центре находятся.

Старый 01.08.2016, 21:43
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 5  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Вообще-то тогда исходник имело бы смысл выложить.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 23.08.2016, 17:13
EndoCrinologist вне форума Посмотреть профиль Отправить личное сообщение для EndoCrinologist Найти все сообщения от EndoCrinologist
  № 6  
Ответить с цитированием
EndoCrinologist
 
Аватар для EndoCrinologist

блогер
Регистрация: Feb 2011
Адрес: Россия, Тольятти
Сообщений: 301
Записей в блоге: 10
Есть только идея - искать ближайшие перпендикулярные центры гексагонов, через которые проходит красная линия
Изображения
 
__________________
Надо сменить подпись...

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

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

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


 


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


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