如何渲染Box2D角度

时间:2015-10-24 20:01:19

标签: box2d

我的项目使用Box2D作为pysics引擎,使用SDL进行渲染。

我试图渲染一个能够旋转的移动物体,但看起来我做错了。

要修复渲染问题,我需要了解我应该如何绘制它。

假设我在Box2D有一辆车,位置10,10,角度为60度。该物体具有4个宽度和10个高度的夹具。我应该如何呈现它?

选项1 enter image description here 选项2 enter image description here

1 个答案:

答案 0 :(得分:0)

我使用SDL / Box2D处理的项目的一些渲染代码:

void Something::Render() 
{
    SDL_Rect stretchRect;
    stretchRect.x = (m_body->GetPosition().x * Constants::METRESTOPIXELS)  - (m_dimensions.x / 2);
    stretchRect.y = (-m_body->GetPosition().y * Constants::METRESTOPIXELS)  - (m_dimensions.y / 2);
    stretchRect.w = m_dimensions.x;
    stretchRect.h = m_dimensions.y;
    float angle = m_body->GetAngle() * Constants::TODEGREES;
    SDL_RenderCopyEx ( m_renderer, m_texture, NULL, &stretchRect, angle, NULL, SDL_RendererFlip::SDL_FLIP_NONE );
}

METRESTOPIXLES是Box2d到像素的缩放比例。 TODEGREES用于将弧度转换为度数。 m_body是Box2D正文,m_dimensions是图像的大小。 m_rendererSDL_Renderer,我们将对它的引用传递给对象构造函数中的对象。