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

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

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

Регистрация: Jul 2010
Сообщений: 71
По умолчанию Как создать треугольник?

Возникла необходимость создать треугольник. В примерах которые нашел создается либо прямоугольник либо круг. Знаю что надо описать координаты вершин, но примеров не нашел. Просьба скопировать весь код:
Код AS3:
от
bodyDef = new b2BodyDef()
до
body.SetMassFromShapes()
или ссылку на подробный пример
версия 2.0.2

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
b2Polygon?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Nov 2010
Сообщений: 190
Отправить сообщение для FieryWall с помощью ICQ Отправить сообщение для FieryWall с помощью Skype™
point1,2,3 - вершины треугольника по типу b2Vec2.
Код AS3:
var polygon:b2PolygonShape = new b2PolygonShape();
var vec:Vector<b2Vec2> = new Vector<b2Vec2>;
vec[0] = point1;
vec[1] = point2;
vec[2] = point3;
polygon.SetAsVector(vec, vec.length);
далее по аналогии со всеми другими примерами.
Так же можно и различные многоугольники за несколькими критериями:
1.Не больше 8 вершин;
2.Точки должны быть выставлены по часовой стрелке;
3.Все углы должны быть выпуклые.


Последний раз редактировалось FieryWall; 05.01.2012 в 14:14.
Старый 05.01.2012, 15:06
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

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

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

Регистрация: Nov 2010
Сообщений: 190
Отправить сообщение для FieryWall с помощью ICQ Отправить сообщение для FieryWall с помощью Skype™
1.В версии бокса 2.0.2 ограничение (по правде говоря не проверял но такое есть).
2.Наступал на эти грабли, в поисках решения проблемы где то прочитал не однократно что точки должны быть выставлены именно в таком порядке - в итоге все заработало. Вот вырезка с одного форума:
Цитата:
все-таки координаты задаются по часовой в "экранной" системе координат, т.к. ось y инвертирована, о чем написано в мануале, это также легко проверить посмотрев метод SetAsBox()
3.Логично, но в случаи других многоугольников все именно так


Последний раз редактировалось FieryWall; 05.01.2012 в 15:44.
Старый 05.01.2012, 18:32
provigator вне форума Посмотреть профиль Отправить личное сообщение для provigator Найти все сообщения от provigator
  № 6  
Ответить с цитированием
provigator

Регистрация: Jul 2010
Сообщений: 71
в общем просмотрел уроки 2.0.2
получилась такая конструкция:
Код AS3:
var body:b2Body
var bd:b2BodyDef
bd = new b2BodyDef()
// ta1 - имя клипа
bd.position.Set(ta1.x/30, ta1.y/30)
var tr1:b2PolygonDef = new b2PolygonDef()
// количество вершин
tr1.vertexCount = 3
// координаты вершин
tr1.vertices[0] = -18/30,  16/30
tr1.vertices[1] =      0, -29/30
tr1.vertices[2] =  20/30,  16/30
tr1.density = 1.5         // плотность
tr1.friction = 0.5
tr1.restitution = 0.2
body = m_world.CreateBody(bd)
body.CreateShape(tr1)
body.SetMassFromShapes()
ошибки компиляции:
TypeError: Error #1006: value не является функцией.
at Box2D.Collision.Shapes::b2PolygonShape()
at Box2D.Collision.Shapes::b2Shape$/Create()
at Box2D.Dynamics::b2Body/CreateShape()

подскажите что делаю не правильно?

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

Регистрация: Nov 2010
Сообщений: 190
Отправить сообщение для FieryWall с помощью ICQ Отправить сообщение для FieryWall с помощью Skype™
возможно так:
Код AS3:
tr1.vertices[0] = new b2Vec2(-18/30,  16/30);
tr1.vertices[1] = new b2Vec2(0, -29/30);
tr1.vertices[2] = new b2Vec2(20/30,  16/30);
потому что так как у вас я вижу впервые

и точку с запятой после каждого рядка


Последний раз редактировалось FieryWall; 05.01.2012 в 19:36.
Старый 05.01.2012, 20:23
provigator вне форума Посмотреть профиль Отправить личное сообщение для provigator Найти все сообщения от provigator
  № 8  
Ответить с цитированием
provigator

Регистрация: Jul 2010
Сообщений: 71
в общем заработало)
во-первых координаты задавал не правильно, ну и с кодом перемудрил немного
копирую код создания треугольника или многоугольника:
все вершины должны быть выпуклыми
Код AS3:
bodyDef=new b2BodyDef()
// t1 - имя клипа
bodyDef.position.Set(t1.x/30, t1.y/30)
var tr1:b2PolygonDef = new b2PolygonDef()
//количество вершин
tr1.vertexCount = 3
// координаты вершин
tr1.vertices[0] = new b2Vec2(-18/30, 16/30);
tr1.vertices[1] = new b2Vec2(0, -29/30);
tr1.vertices[2] = new b2Vec2(20/30, 16/30);
tr1.density = 0.5         // плотность
bodyDef.userData=t1
body = m_world.CreateBody(bodyDef)
body.CreateShape(tr1)
body.SetMassFromShapes()

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

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

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


 


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


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