2016-08-29 63 views
0

你将如何去渲染box2d中的关节?例如,如果你要制作一个抓钩,你是如何制作的,以便一个精灵或者其他东西完全跟随它的运动?我试图创建一个与关节处于同一位置的身体,但是Im挣扎了很多,实际上使它始终处于关节之上。呈现关节? [libGDX/Box2D]

+0

显示你得到了什么,到目前为止,一些代码 – Draz

+0

我的继承人绳类,ATM我这么说了一堆,通过距离关节形式连接体一个连锁的东西,这应该是将玩家连接到云端的绳索。这不起作用,因为box2d中的关节吸收并以最小的力量开始弹出。 http://pastebin.com/3qQMQ0Xw我想尝试使它成为一个单独的大片段来连接播放器和天花板,以查看它是否更加稳定(然后只需向该主体添加一个精灵来渲染它),我目前已离开从家里无法尝试,但希望你看到我的目标是什么。 –

+0

你想在绳索上启用碰撞吗?如果是,那么在你的绳索身上使用旋转接头。如果不是,那么你不需要身体来画绳子。 – Draz

回答

1

所有您需要做的事情如下:

您将所需精灵的原点设置为旋转点(例如,底部中心)一次。

sprite.setOrigin(sprite.width()/2, 0); 

您确定beween在oyur更新方法的距离联合两个 锚矢量的角度。请注意,您可能必须将本地锚点转换为世界点。

float angle = playerAnchorPoint.sub(ceilingAnchorPoint).angle(); 

并设置位置和角度:

sprite.setPosition(playerAnchor.x - sprite.width()/2, playerAnchor.y); 
sprite.setRotation(angle); 
+0

我试过了,但我似乎在做旋转方面的错误,因为psrite只是不旋转。转换为世界点的含义是什么? –

+0

那么,你在本地坐标(相对于身体中心)设置你的身体的锚点。要从玩家身体到天花板身体获得矢量,您必须将本地数据转换为世界数据。像这样:Playerbody.getWorldPoint(Joint.getLocalAnchorA)和ceilingbody.getWorldPoint(Joint.getLocalAnchorB) – Draz

+0

好吧我现在有点工作了,它似乎正在转向正确的方式,但它的超级快,也许与PPM有关价值..我想不明白。感谢所有的帮助! –