Używam silnika fizyki Box2D. Istnieje także rodzaj kształtu dla box2D o nazwie b2PolygonShape.
W tej klasie możesz tworzyć wielokąty. Istnieje również funkcja Set (), która pobiera tablicę punktów i liczbę wierzchołków.
Box2D ma taki przykład:
// This defines a triangle in CCW order.
b2Vec2 vertices[3];
vertices[0].Set(0.0f, 0.0f);
vertices[1].Set(1.0f, 0.0f);
vertices[2].Set(0.0f, 1.0f);
int32 count = 3;
b2PolygonShape polygon;
polygon.Set(vertices, count);
To działa. Jednak kiedy próbowałem ćwiczyć i zadzierać z tą funkcją, zrobiłem to:
b2Vec2 vertices[4];
vertices[0].Set(0, 0);
vertices[1].Set(0,10);
vertices[2].Set(10,10);
vertices[3].Set(10,0);
int32 count = 4;
b2PolygonShape polygon;
polygon.Set(vertices, count);
Kiedy skompilowałem i uruchomiłem to, zawiesił się po funkcji Set (). Czy to nie stworzy kwadratu?
Również w konsoli mam to:
Assertion failed: s > 0.0f
Co zrobiłem źle?