我的问题是,我的Box2D身体有另一个位置,而不是我想为那个身体呈现的LibGDX雪碧。在我的渲染循环中,对于每个身体,我将它的精灵位置设置为身体的一个,然后渲染它。当创建一个圆以外的Box2D形状时,Box2D不会从它的起源移动它,LibGDX也不会移动它。如果我现在移动或设置身体的位置,我的精灵将永远跟随它。但是,不幸的是,在CircleShapes中这是不可能的:由于LibGDX的Sprite#setPosition没有考虑到雪碧的起源(它只用于缩放和旋转),因此雪碧是由其左下角设置的。这就是问题所在:考虑到起源,Box2D CircleShape被移动了!所以我的精灵总是从形状的起源开始。有人知道怎么解决这个问题吗?而且,最终,我希望在考虑到起源的同时,总是将两者都移开。我该怎么做?
发布于 2015-06-18 08:50:07
Box2d的身体起源从未改变过。圆形和盒形的原点是中间的,多边形的原点是左下角。修复它的唯一方法是将雪碧原点更改为中间,即Sprite.setOriginCenter();。
如果身体是圆形或盒形,则精灵的位置设置为
sprite.setPosition(body.getPosition().x - sprite.getWidth()/2, body.getPosition().y - sprite.getHeight()/2);。
如果主体是多边形形状,则代码应该如下所示
sprite.setPosition(body.getPosition().x, body.getPosition().y);。
https://stackoverflow.com/questions/27333884
复制相似问题