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

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

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

Регистрация: Jul 2010
Сообщений: 71
По умолчанию соединение двух тел

создаю 2 тела
Код AS3:
bodyDef=new b2BodyDef()
bodyDef.position.Set(c1.x/30, c1.y/30)			
boxDef=new b2PolygonDef()
boxDef.SetAsBox((c1.width)/30/2, (c1.height)/30/2)
boxDef.density=1.5
boxDef.friction=0.5
boxDef.restitution=0.2
bodyDef.userData=c1
body=m_world.CreateBody(bodyDef)
body.CreateShape(boxDef)
body.SetMassFromShapes()
 
bodyDef=new b2BodyDef()
bodyDef.position.Set(c2.x/30, c2.y/30)			
boxDef=new b2PolygonDef()
boxDef.SetAsBox((c2.width)/30/2, (c2.height)/30/2)
boxDef.density=1.5
boxDef.friction=0.5
boxDef.restitution=0.2
bodyDef.userData=c2
body=m_world.CreateBody(bodyDef)
body.CreateShape(boxDef)
body.SetMassFromShapes()
как соединить эти тела?
соединение должно быть жестким
версия 2.0.2

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
советую посмотреть в сторону b2WeldJoint. Но он мудреный.
Можно обойти используюя b2RevoluteJoint с отключенным вращением.

Но в этом коде я не вижу создания двух тел. Точнее оно есть, но обращаться по ссылке можно будет только к одному. Для соединения необходимо определить 2 переменных с типом b2Body, иначе это танцы с бубном

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

Регистрация: Jul 2010
Сообщений: 71
нужен более подробный ответ в коде
1. как определить переменные
2. как создать соединение b2RevoluteJoint
соединение должно быть жестким
версия 2.0.2

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
1. как определить переменные
Какой-то странноватый вопрос. А ты этот-то код сам писал? Или копипаст?
Код AS3:
var body1:b2Body;
var body2:b2Body;
Как создаются шарниры есть в документации, довольно подробно. Я на версии 2.0.2 уже давно ничего не делал.
Вот пример для 2.1а

Код AS3:
 
var jointDef:b2RevoluteJointDef 	= new b2RevoluteJointDef();
jointDef.Initialize(_body, _leftTrack, new b2Vec2(	_body.GetWorldCenter().x, _body.GetWorldCenter().y) );
_leftTrackJoint 	= _world.CreateJoint(jointDef) as b2RevoluteJoint;
_leftTrackJoint.EnableLimit(true);
_leftTrackJoint.EnableMotor(false);

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

Регистрация: Jul 2010
Сообщений: 71
этот код сам писал
почитал доки по 2.0.2
Код AS3:
var jointDef:b2RevoluteJointDef = new b2RevoluteJointDef();
jointDef.Initialize(body1, body2, myBody1.GetWorldCenter());
но все равно не понятно как определяются переменные для тел
я для этого и написал код на этапе создания тела


Последний раз редактировалось provigator; 30.11.2011 в 16:43.
Старый 30.11.2011, 16:42
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
в моем коде телами являются _body и _leftTrack
достаточно передать их при инициализации шарнира

body1 и body2 были ответом на вопрос:
Цитата:
1. как определить переменные

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

Регистрация: Jul 2010
Сообщений: 71
теперь немного прояснилось
не понятно как определить переменную и привязать к телу на этапе создания тела
этот момент поясни, я для этого и написал скрип создания двух тел

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Код AS3:
body1 = m_world.CreateBody(bodyDef)
в первом блоке, и:
Код AS3:
body2 = m_world.CreateBody(bodyDef)
во втором

Старый 30.11.2011, 18:24
provigator вне форума Посмотреть профиль Отправить личное сообщение для provigator Найти все сообщения от provigator
  № 9  
Ответить с цитированием
provigator

Регистрация: Jul 2010
Сообщений: 71
да!!!


Последний раз редактировалось provigator; 30.11.2011 в 18:33.
Старый 30.11.2011, 18:35
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 10  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
эта ошибка не имеет к бокс2д ни малейшего отношения.
Надо было определить переменную перед тем, как ее использовать
Код AS3:
// где-то вначале 
var body1:b2Body;
....
// где-то потом
body1 = m_world.CreateBody(bodyDef)
п.с. пиши код с пробелами, по крайней мере на форуме. Напрягает читать когда все слеплено в кучу

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

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

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


 


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


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