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

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

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

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

делаю игру на box2d. Персонаж в виде прямоугольника, по горизонтали двигается через SetLinearVelocity, а по вертикали через ApplyImpulse.
Когда персонаж находится в прыжке его можно направлять клавишами влево/вправо, так вот если удерживать например клавишу влево он приклеится к левой стене и не падает.

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

Какие посоветуете выходы из данной ситуации?

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

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
1) приделать персонажу колесо и двигать его влево-право вращением колеса, заодно пропадёт и управление в полёте
2) сделать только стены скользкими
__________________
Хороший отдых - половина работы.

Старый 21.11.2011, 20:43
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 3  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
удерживать например клавишу влево он приклеится к левой стене и не падает.
Абсолютно логичное поведение. Бокс2д - это физический движок. Если прижать кирпич рукой к стене и давить на него с постоянной силой, он упадет? Не?

Нужно просто создать слушатель столкновений и при ударе о стену убирать нажатие клавиши, чтобы оно не становилось активным до следующего нажатия.
Что-то типа:
Код AS3:
var aFixture:b2Fixture 	= contact.GetFixtureA();
var bFixture:b2Fixture 	= contact.GetFixtureB();
var userData1:*            = aFixture.getBody().getUserData();
var userData2:*            = bFixture.getBody().getUserData();
if ((userData1 is Wall && userData2 is Character) || 
    (userData2 is Wall && userData1 is Character) {
     arrowKeyPressed = false;
}
Это будет чем-то вроде временного ослабления давления на тело, что позволит движку сэмулировать падение.

Цитата:
1) приделать персонажу колесо и двигать его влево-право вращением колеса, заодно пропадёт и управление в полёте
2) сделать только стены скользкими
Больше походит на костыли, чем на решение проблемы.

Старый 21.11.2011, 20:59
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 4  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
Цитата:
Сообщение от goodguy Посмотреть сообщение
Больше походит на костыли, чем на решение проблемы.
На таких костылях с колесом работают хорошие игрушки, например зомботрон: http://www.kongregate.com/games/AntKarlov/zombotron

это решает одним махом еще и проблему неровностей на полу,
за которые, катающееся колесо цепляется не так сильно как коробка которую волокут

Ваше решение напротив - убивает отскок от стенки.
И представьте себе такую ситуацию:

Код:
  O-->    |
 ____     |
    |
    |____________
если пользователь будет всё время держать кнопку вправо, то
в моём случае, после падения, пресонаж побежит дальше, а с вашим решением оставовится
__________________
Хороший отдых - половина работы.

Старый 21.11.2011, 21:01
ch3cker вне форума Посмотреть профиль Отправить личное сообщение для ch3cker Найти все сообщения от ch3cker
  № 5  
Ответить с цитированием
ch3cker

Регистрация: Aug 2011
Сообщений: 22
Цитата:
Нужно просто создать слушатель столкновений и при ударе о стену убирать нажатие клавиши
Тоже думал о таком варианте, но не будет ли падения производительности если таких стен будет очень много?

Добавлено через 1 минуту
artcraft, видел реализации с колесом, но если честно не понимаю чем колесо поможет от прилипания к стене?

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

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
Цитата:
Сообщение от ch3cker Посмотреть сообщение
не понимаю чем колесо поможет от прилипания к стене?
персонажа к стене приклеивает боковая постоянная сила и трение

если разгонять персонажа колесом, то в прыжке колесо будет работать вхолостую и не будет ни на что влиять, пока персонаж не касается горизонтальной поверхности
__________________
Хороший отдых - половина работы.

Старый 21.11.2011, 21:13
ch3cker вне форума Посмотреть профиль Отправить личное сообщение для ch3cker Найти все сообщения от ch3cker
  № 7  
Ответить с цитированием
ch3cker

Регистрация: Aug 2011
Сообщений: 22
Тогда каким образом он сможет запрыгнуть, на что либо с места без разгона?

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

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
это обратная сторона медали, но ведь в реальном мире так всё и работает
никто, как Марио, не может менять направление прыжка пока летит

ну и никто не запрещает, при прыжке, придать еще и горизонтальный импульс
__________________
Хороший отдых - половина работы.


Последний раз редактировалось artcraft; 21.11.2011 в 21:19.
Старый 21.11.2011, 21:30
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 9  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
На таких костылях с колесом работают хорошие игрушки, например зомботрон
аа, я не так себе представил сначала это колесо
Тогда дико извиняюсь =) Да, вариант на самом деле неплохой

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

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

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


 


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


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