![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2010
Сообщений: 71
|
Возникла необходимость создать треугольник. В примерах которые нашел создается либо прямоугольник либо круг. Знаю что надо описать координаты вершин, но примеров не нашел. Просьба скопировать весь код:
или ссылку на подробный пример версия 2.0.2 |
|
|||||
|
point1,2,3 - вершины треугольника по типу b2Vec2.
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. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Цитата:
Цитата:
|
|
|||||
|
1.В версии бокса 2.0.2 ограничение (по правде говоря не проверял но такое есть).
2.Наступал на эти грабли, в поисках решения проблемы где то прочитал не однократно что точки должны быть выставлены именно в таком порядке - в итоге все заработало. Вот вырезка с одного форума: Цитата:
![]() Последний раз редактировалось FieryWall; 05.01.2012 в 15:44. |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 71
|
в общем просмотрел уроки 2.0.2
получилась такая конструкция: 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() подскажите что делаю не правильно? |
|
|||||
|
возможно так:
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. |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 71
|
в общем заработало)
во-первых координаты задавал не правильно, ну и с кодом перемудрил немного копирую код создания треугольника или многоугольника: все вершины должны быть выпуклыми 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, время: 02:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|