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

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

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

Регистрация: Jun 2014
Сообщений: 558
По умолчанию избегания столкновений

Добрый день!
Вопрос, хочу добавить в игру, что бы объекты хотя бы пытались избегать столкновений
Что есть, 5-7 врагов (enemyOne), немного простенького ИИ, что бы они пытались при близком прохождении уходить в бок, а когда подальше наоборот поворачиваться в сторону игрока и стрелять. Я буду вводить столкновения и попадания enemyOne вдруг в друга, соответственно они будут часто толкаться и стрелять друг в друга, хочу немного уменьшить столкновения, дабы они друг друга не поубивали сами. Что есть: пул из enemyOne и немного кода ниже. Я как понимаю придётся подобную схему делать вне класса enemyOneClass, так как он не знает о других экземплярах класса и их координат. Очень интересно мне такое организовать, будет ли это крайне ресурсоёмко?
Код AS3:
package EnemyClass {
	import flash.events.Event;
	import flash.display.MovieClip;
	import OptionClass.GlobalVariableClass;
	import BulletPackage.ControlBulletClass;
	import PackageClass.ExhaustClass;
 
	public class EnemyOneClass extends enemyOne_mc {
		private var mainShip: MovieClip;
		private var exhaustLeft: ExhaustClass = new ExhaustClass();
		private var exhaustRight: ExhaustClass = new ExhaustClass();
		private var gl_variable: GlobalVariableClass = new GlobalVariableClass();
		private var speed: uint;
		private var rotationEnemy: int;
 
		public function EnemyOneClass() {
 
		}
		public function fn_mainShip(_mainShip): void {
			speed = gl_variable.speedEnemyOne;//все основные характеристики, сильно влияющие на баланс содержаться отдельно
			mainShip = _mainShip; //корабль игрока
			//тут ничего важного, небольшая анимация полёта
			exhaustLeft.scaleX = 0.3;
			exhaustLeft.scaleY = 0.45;
			exhaustLeft.x = 40;
			exhaustLeft.y = 20;
			exhaustLeft.rotation = -90;
			this.addChild(exhaustLeft);
 
			exhaustRight.scaleX = 0.3;
			exhaustRight.scaleY = 0.45;
			exhaustRight.x = 40;
			exhaustRight.y = -20;
			exhaustRight.rotation = -90;
			this.addChild(exhaustRight);
		}
		public function fn_playEnemy(e: Event): void {
			if ((Math.abs(mainShip.x - x) > 150) && (Math.abs(mainShip.y - y) > 150)) { //задано расстояние, при котором меняется поведение класса
				var angl: Number = (Math.atan((y - mainShip.y) / (x - mainShip.x))) / Math.PI * 180;
				if (rotation > angl)
					rotation -=2;
				if (rotation < angl)
					rotation +=2;
				x -= speed * Math.cos(rotation * Math.PI / 180);
				y -= speed * Math.sin(rotation * Math.PI / 180);
			} else {
				if (rotation > 180)
					rotation +=3;
				if (rotation < 180)
					rotation -=3;
				x -= speed * Math.cos(rotation * Math.PI / 180);
				y -= speed * Math.sin(rotation * Math.PI / 180);
			}//ничего важного ниже нет
			if (x > stage.stageWidth - 30) {
				x = 30;
			}
			if (x < 30) {
				x = stage.stageWidth - 30;
			}
			if (y > stage.stageHeight - 30) {
				y = 180;
			}
			if (y < 180) {
				y = stage.stageHeight - 30;
			}
		}
	}
}

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
У Кита Питерса в книжке ADvanced Actionscript 3 animation есть подробное описание такого поведения и примерами кода. Смотреть steering behavior - evade behaviors. В исходниках к его книжке на сайте есть и сами коды классов и скомпилированные флешки с разными поведениями

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

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

Старый 05.03.2015, 11:38
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Там в книжке есть все ссылки

Старый 05.03.2015, 13:38
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 5  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
исходим из реальностей, у меня нет возможности купить книжку, да и английким я владею крайне печально

Старый 05.03.2015, 15:10
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 6  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Цитата:
Сообщение от neonoviiwolf Посмотреть сообщение
исходим из реальностей, у меня нет возможности купить книжку, да и английким я владею крайне печально
А если яндексом владеть, то можно на русском бесплатно найти
http://demiart.ru/forum/index.php?showtopic=125911
__________________
Гоночка

Старый 05.03.2015, 18:39
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от neonoviiwolf Посмотреть сообщение
исходим из реальностей, у меня нет возможности купить книжку, да и английким я владею крайне печально
Исходя из все тех же реальностей, каждый программист должен уметь пользоваться поисковиками

Старый 05.03.2015, 20:41
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 8  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
хех, я не нашёл на русском, спасибо за ссылку!

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

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

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


 


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


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