Утверждение не удалось в Shape.SetAsBox ()?

Итак, я пытаюсь создать объект Human, связанный с SFML-спрайтом, а также тело и прибор Box2D. Я получаю эту ошибку, однако:

Assertion failed: area > 1.19209289550781250000e-7F, file ...b2PolygonShape.cpp, line 352

Поэтому я быстро покопался и обнаружил, что моя проблема заключается в том, что я делаю неправильные вершины. Но я не понимаю, как это возможно, если я использую Shape.SetAsBox() функция …

Вот мой код:

#include "../../include/entity/Human.hpp"
Human::Human(unsigned int id, b2World& world, sf::Vector2f pos, sf::Texture* texture)
: AnimatedEntity(id, world, pos, sf::Vector2i(32, 32), texture)
{
b2PolygonShape shape;
shape.SetAsBox((32/2)/SCALE, (32/2)/SCALE);     // Set the size; Box2D takes the half-width/height as params, and then scale.

b2FixtureDef fixtureDef;
fixtureDef.density = .8f;
fixtureDef.friction = .4f;
fixtureDef.restitution = .2f;
fixtureDef.shape = &shape;

e_body->CreateFixture(&fixtureDef);     // Assuming: shape and density are set
}

FTR, SCALE это static const int со значением 30 (30px / 1м). В чем дело?

1

Решение

Я думаю, что означает Биллц:

(32/2) = 16
16 / 30 = 0

Вам просто нужно использовать float для SCALE вместо int …

2

Другие решения

Других решений пока нет …