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

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

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

Регистрация: Nov 2010
Сообщений: 190
Отправить сообщение для FieryWall с помощью ICQ Отправить сообщение для FieryWall с помощью Skype™
По умолчанию Постоянный контакт

Здравствуйте все! Давно юзаю box2D, сейчас на версии 2.1a.
В контакта разбираюсь, волнует вот какой вопрос:
Почему при постоянном контакте beginContact срабатывает только раз в 10 - 20 апдейтов (одним словом - редко)? Трабла происходит при движении по поверхности с которой нужен контакт. Заранее спасибо

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

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Полагаю, что beginContact срабатывает только раз в 10 - 20 апдейтов, потому что контакт не разрывается, от этого не вызывается endContact, соответственно если не было endContact, то не будет и beginContact.
Если это не логично, то box2.1a это бета и могут быть глюки.
Для себя сделал простое решение того, стоит ли персонаж на чем нибуть и может из-за этого прыгать, или он в воздухе и прыгать не может.
Код AS3:
//кусок платформера			
chPos = charaB2d.body.GetPosition().Copy();
chPos.y += charaB2d.height + 0.1;
chPos.x -= charaB2d.width-0.1;
myWorld.QueryPoint(floorCB, chPos);
//конец куска платформера
 
		public function floorCB(fixture:b2Fixture):void {
			charaB2d.myUserData.floor = MyUserData.FLOOR_ON;
			//trace('контачит с полом ');
		}
Те если под персонажем есть опора, то метод QueryPoint вызовет сразу метод floorCB, а с контактами у меня все равно иногда глючило, очень редко, но метко.
__________________
Гоночка

Старый 09.05.2011, 20:08
FieryWall вне форума Посмотреть профиль Отправить личное сообщение для FieryWall Найти все сообщения от FieryWall
  № 3  
Ответить с цитированием
FieryWall
 
Аватар для FieryWall

Регистрация: Nov 2010
Сообщений: 190
Отправить сообщение для FieryWall с помощью ICQ Отправить сообщение для FieryWall с помощью Skype™
Ок, спасибо!!! Но:
Код AS3:
charaB2d.myUserData.floor = MyUserData.FLOOR_ON;  // - что это???


Последний раз редактировалось FieryWall; 09.05.2011 в 22:38.
Старый 10.05.2011, 21:57
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 4  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
MyUserData этой мой пользовательский класс, который к бокс2д 2.1 имет отношение, только если считать, что я его экземпляр используею как userData объекта body персонажа, другими словами не имеет отношения к обсуждаемой теме, потом, просто если floor равен FLOOR_ON, то можно ходить влево или вправо, ну или прыгать пробельной клавишей.
__________________
Гоночка

Старый 10.05.2011, 22:14
FieryWall вне форума Посмотреть профиль Отправить личное сообщение для FieryWall Найти все сообщения от FieryWall
  № 5  
Ответить с цитированием
FieryWall
 
Аватар для FieryWall

Регистрация: Nov 2010
Сообщений: 190
Отправить сообщение для FieryWall с помощью ICQ Отправить сообщение для FieryWall с помощью Skype™
Цитата:
Сообщение от Alex Lexcuk Посмотреть сообщение
MyUserData этой мой пользовательский класс, который к бокс2д 2.1 имет отношение, только если считать, что я его экземпляр используею как userData объекта body персонажа, другими словами не имеет отношения к обсуждаемой теме, потом, просто если floor равен FLOOR_ON, то можно ходить влево или вправо, ну или прыгать пробельной клавишей.
А charaB2d - это боди который должен "Пригать"?

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

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
конечно charaB2d прыгает, но с физической точки зрения прыгает charaB2d.body, это как если бы у персоонажа был мозг, то тело прыгает, но прыгает ли МОЗГ? конечно он то-же прыгает.
__________________
Гоночка

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

Регистрация: Nov 2010
Сообщений: 190
Отправить сообщение для FieryWall с помощью ICQ Отправить сообщение для FieryWall с помощью Skype™
Цитата:
Сообщение от Alex Lexcuk Посмотреть сообщение
конечно charaB2d прыгает, но с физической точки зрения прыгает charaB2d.body, это как если бы у персоонажа был мозг, то тело прыгает, но прыгает ли МОЗГ? конечно он то-же прыгает.
То есть это Клас екстенд МувиКлип внутри которого лежит боди что прыгает?

В общем хочу все для себя прояснить:

Код AS3:
chPos = charaB2d.body.GetPosition().Copy(); //chPos - это поинт; charaB2d - класс бодика
chPos.y += charaB2d.height + 0.1; //Присваиваем поинту координаты чуть дальше правого...
chPos.x -= charaB2d.width-0.1;//...нижнего угла нашего класса(мувика)
myWorld.QueryPoint(floorCB, chPos);//QueryPoint сработает когда нижний правый угол 
                                   //класса будет принадлежать(геометрически) любому объекту?
Код AS3:
public function floorCB(fixture:b2Fixture):void {
            charaB2d.myUserData.floor = MyUserData.FLOOR_ON;//Я так понял эо не обязательно
            trace('контачит с полоd.myUserData.floor = MyUserData.FLOOR_Oм ');//Если контачит
}
Прокомментируйте, будьте добры, мои комментарии. Спасибо

Добавлено через 2 часа 33 минуты
Все, понял
Мы просто узнаем принадлежит ли точка одному из объектов, очень удобная штука, если например нужно сравнивать высоту, СПАСИБО!!!


Последний раз редактировалось FieryWall; 11.05.2011 в 22:59.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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