平台物理 - XNA Farseer C#

时间:2012-01-14 00:07:03

标签: c# xna 2d box2d physics

所以我一直在使用Farseer作为物理平台游戏,我开始遇到一些问题,如下所示:

Fig 1

当我想要我的角色跳跃时,我不仅仅想要对角色身体施加冲动,但更现实的是,角色身体应该向下推动它下面的物体(1)从而向上推动自己(2)。

Fig2

当我希望我的角色移动时同样适用。当角色移动时,它应该施加力并推开它下方的物体(1),不要随身携带物体,从而向相反方向移动(2)。

虽然我将在这个游戏中使用骨骼动画,但我想保持它是一个边界框形状。这将是一个联网游戏,物理将通过服务器处理。我更喜欢避免服务器压力,因此我会将字符保存到边界框并将所有骨骼动画保留到客户端。

以下是我的问题:

  

我被迫"假"这些力量?

     

在服务器端复制骨架动画是否合理,   并且只为每个角色的不同骨骼使用胶囊体?   这太激烈了吗?

游戏应该能够在多个房间内支持每个房间20-30人。如果涉及到它,我想避免非常沉重的服务器压力。

我试图将此发布到GameDev,但我还没有在那里发布图片的声誉,所以我会首先尝试在这里找到答案。

2 个答案:

答案 0 :(得分:2)

不要在您希望玩家移动的方向上施加力,而是沿相反方向施加力。这实际上会产生一个碰撞,并且该框会推动你的角色。如果你玩弄身体恢复财产,你可能会达到一个可以为你服务的可接受的“bounciness”。

您需要检查您的播放器是否先放在盒子顶部,否则您的播放器将向下飞行。

答案 1 :(得分:1)

Farseer body应该跟踪任何当前的碰撞,这就是角色知道下面的东西支持它的方式。我建议对所支持的角色使用力,如果你想要求实,请考虑角色和支持对象的质量,以及跳跃的高度。无论计算什么作为施加到支撑体的向下力,都应该颠倒并应用于角色。

如果你想尝试使用Farseer来实现这一点,而不是自己计算,你可以使用弹簧来做到这一点,但是否则按下支撑对象不会让玩家推动向上。