Platformer Physics-XNA Farseer C#

Platformer Physics-XNA Farseer C#,c#,xna,2d,box2d,physics,C#,Xna,2d,Box2d,Physics,因此,我一直在使用Farseer作为物理平台,我开始遇到一些问题,如下所示: 当我想让我的角色跳跃时,我不仅想对角色身体施加一种冲动,更现实的是,角色身体应该向下推动它下面的物体(1),从而推动自己向上(2) 当我想让我的角色移动时,这同样适用。当角色移动时,它应该施加力并推开其下方的对象(1),而不是携带对象,从而以相反的方向移动(2) 虽然我将在这个游戏中使用骨骼动画,但我希望它是一个边界框形状。这将是一个网络游戏,物理将通过服务器处理。我更喜欢避免服务器压力,所以我会将角色保留在边界框

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

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

当我想让我的角色移动时,这同样适用。当角色移动时,它应该施加力并推开其下方的对象(1),而不是携带对象,从而以相反的方向移动(2)

虽然我将在这个游戏中使用骨骼动画,但我希望它是一个边界框形状。这将是一个网络游戏,物理将通过服务器处理。我更喜欢避免服务器压力,所以我会将角色保留在边界框中,并将所有骨骼动画保留在客户端

下面是我的问题:

我是被迫“伪装”这些部队的吗

在服务器端复制骨骼动画是否合理, 只需将胶囊体用于每个角色的不同骨骼? 这会不会太激烈了

游戏应该能够支持20-30人在多个房间每个房间。如果说到这一点,我希望避免非常沉重的服务器压力


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

不要在您希望玩家移动的方向上施加力,而是在相反的方向上施加力。这基本上会创建一个碰撞,并且长方体会将角色向上推。如果您使用body restitution属性,您可能能够达到一个可接受的“弹性”,这对您来说是可行的


你需要先检查一下你的播放器是否放在盒子的顶部,否则你的播放器就会向下飞

法希尔的身体应该跟踪当前的碰撞,这就是角色知道它被下面的东西支撑的方式。我建议对角色所支撑的物体施加一个力,如果你想要真实感,考虑角色和被支撑物体的质量,以及跳跃的高度。任何被计算为施加在支撑体上的向下力都应反向,并且也应施加在角色上


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

StackExchange还有一个游戏开发网站,您可能会感兴趣:我目前正在尝试积累足够的代表点数,以便在那里发布图像,谢谢。这是一个非常有趣的想法。我一定会试试这个,让你知道它是如何工作的。