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

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

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

Регистрация: Aug 2011
Сообщений: 28
По умолчанию движение по грид

ребята,

помогите пожалуйста

делаю такую игру
http://www.king.com/intermission_vir...89&action=play


все получается, только не знаю как сделать движение врагов.

Код AS3:
 
private function handleCreatures():void 
		{
 
			var heroPoint:Point = new Point(hero.x, hero.y);
 
			for (var i:int = 0; i < enemies.length; i++) {
 
				var e:Enemy = enemies[i] as Enemy;
 
				var ltg:Point = gameContainer.localToGlobal(new Point(e.x, e.y)) as Point;
 
				if (isOnStage(ltg)) {
 
 
					var enemyPoint:Point = new Point(e.x, e.y);
 
					var diffPoint:Point = heroPoint.subtract(enemyPoint);
					diffPoint.normalize(1);
 
					tryToMoveActor(e, diffPoint.x, diffPoint.y, 1);
 
 
				}
			}
		}

Код AS3:
 
private function tryToMoveActor(e:Enemy, xV:Number, yV:Number, speed:Number):void 
		{
                        /// узнай новую позицию
			var nextTablePos:Point = new Point();
			nextTablePos.x = Math.floor((e.x + xV * speed) / MainSettings.CELL_SIZE);
			nextTablePos.y = Math.floor((e.y + yV * speed) / MainSettings.CELL_SIZE);
 
                        /// если кто то уже занимает место
			if ((table[nextTablePos.y] && table[nextTablePos.y][nextTablePos.x] is IActor)) {
 
 
				if (IActor(table[nextTablePos.y][nextTablePos.x]) != e) {
 
					return;
				}
 
 
			}
 
			e.x += xV * speed;
			e.y += yV * speed;
 
			e.updateTablePos();
 
 
 
			putItemToTable(e);
			removeHeroFromTable(e);
 
 
 
 
		}
Код AS3:
private function putItemToTable(actor:IActor):void 
		{
			table[actor.yy][actor.xx] = actor;;
		}
Код AS3:
 
private function removeItemFromTable(actor:IActor):void 
		{
			if (table[actor.yy] && table[actor.yy][actor.xx] == actor) {
 
				table[actor.yy][actor.xx] = "";
			}
		}


двигаются в правильном направлении, но стoлкиваются друг с другом


Последний раз редактировалось hellopaso; 19.10.2011 в 00:45.
Создать новую тему   Часовой пояс GMT +4, время: 12:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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