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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

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

Добрый день, пытаюсь разобраться с сенсорными телами, но что-то не получается
Код работает, когда я ставлю Collision, а когда sensor не работает

Большая просьба, объясните про группы и маски, зоны видимости


Код AS3:
//отрывок из одного класса
 
		public function get getBody():Body
		{
			var collisionGroup:int = 0xFFFFFFFF;
			var collisiomMask:int = 0x00000010;
			var sensorGroup:int = 0xFFFFFFFF;
			var sensorMask:int = 0xFFFFFFFF;
 
			var mouse:Mouse = new Mouse;
			body = new Body(BodyType.DYNAMIC);
			body.userData.sprite = mouse;
			mouse.setBody = body; //вызывается в Mouse для передачи параметров body
			var shape:Shape = new Polygon(Polygon.box(35, -35), Material.rubber(), new InteractionFilter(collisionGroup, collisiomMask, sensorGroup, sensorMask));
 
			body.shapes.add(shape);
			body.align();
			return body;
		}
Код AS3:
//отрывок из второго класса
		public function CatNape()
		{
			var collisionGroup:int = 0xFFFFFFF0;
			var collisiomMask:int = 0x00000010;
			var sensorGroup:int = 0xFFFFFFFF;
			var sensorMask:int = 0xFFFFFFFF;
 
			body = new Body(BodyType.DYNAMIC, new Vec2(100, 220));
			var shape:Shape = new Polygon(Polygon.box(60, -45), Material.rubber(), new InteractionFilter(collisionGroup, collisiomMask, sensorGroup, sensorMask));
 
			body.shapes.add(shape);
			body.align();
		}
тут функция слушателя событий nape, если вместо InteractionType.COLLISION написать InteractionType.SENSOR, то событие не вызывается, при этом параметр var collisiomMask:int = 0x00000010; одного из классов я меняю на var collisiomMask:int = 0x00000001;
Код AS3:
		private var interactionListener:InteractionListener;
		private var catCollisionType:CbType = new CbType();
		private var mouseCollisionType:CbType = new CbType();
 
		public function startGame():void
		{
			interactionListener = new InteractionListener(CbEvent.BEGIN, InteractionType.COLLISION, catCollisionType, mouseCollisionType, sensorMouseAndCat)
			space.listeners.add(interactionListener);
		}
 
		private function sensorMouseAndCat(collision:InteractionCallback):void
		{
			trace(3333);
		}

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Код AS3:
shape.sensorEnabled = true;

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

Регистрация: Jun 2014
Сообщений: 558
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Код AS3:
shape.sensorEnabled = true;
писал так, но у меня пропадает физика тогда, все объекты находятся на платформе и при добавлении этой строчки сквозь неё проваливаются

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

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

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

Регистрация: Jun 2014
Сообщений: 558
На рисунке круглое тело пусть ball, квадратное box
ball прыгает на одном месте с постепенным угасанием. box движется по направлению к ball, если тела сталкиваются(физика столкновения не нужна тут, т.к. ball должен прыгать строго вертикально), нужно поймать событие sensor, при этом событии я решаю, менять ли значение ball.velocity.y и какие коэффициенты применить
Миниатюры
Нажмите на изображение для увеличения
Название: рисунок.jpg
Просмотров: 53
Размер:	31.0 Кб
ID:	31738  

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

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

Старый 09.08.2015, 12:00
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 7  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
caseyryan большое спасибо, то что нужно
Если не затруднит, объясните про маски и группы

Добавлено через 14 часов 18 минут
ещё вопрос
Код AS3:
		private var catCollisionType:CbType = new CbType();
		private var mouseCollisionType:CbType = new CbType();
 
		public function startGame():void
		{
			space.listeners.add(new PreListener(InteractionType.COLLISION, catCollisionType, mouseCollisionType, preListenerHandler));
		}
 
		private function preListenerHandler(cb:PreCallback):PreFlag
		{
			var normal:Vec2 = cb.arbiter.collisionArbiter.normal;
			if (cat.velocity.y > 0)
			{
				cat.velocity.y *= -1;
				trace(cat.velocity.y);
			}
 
			return PreFlag.IGNORE;
		}
в mouseCollisionType я закидываю массив экземпляров Body, а как получить ссылку, с каким точно было столкновение?

Добавлено через 26 часов 13 минут
как получить ссылку на Body разобрался, остался вопрос про группы и маски


Последний раз редактировалось neonoviiwolf; 09.08.2015 в 18:13.
Создать новую тему Ответ Часовой пояс GMT +4, время: 14:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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