c# - 平台物理 - XNA Farseer C#

标签 c# xna 2d box2d physics

因此,我一直在使用 Farseer 来开发具有物理功能的平台游戏,但我开始遇到一些问题,如下所示:

Fig 1

当我希望我的角色跳跃时,我不仅想对角色 body 施加冲力,而且更现实的是,角色 body 应该向下推其下方的物体 (1),从而向上插入自身 (2) )。

Fig2

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

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

这是我的问题:

Am I forced to "fake" these forces?

Is it reasonable to duplicate skeletal animations on the server side, and just use capsule bodies for the different bones of each character? Will this be too intense?

游戏应该能够支持多个房间的每个房间 20-30 人。如果确实如此,我希望避免服务器压力过大。

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

最佳答案

不要向您希望玩家移动的方向施加力,而是向相反的方向施加力。这本质上会产生碰撞,盒子会将你的角色推上来。如果您尝试使用 body 恢复属性,您可能能够达到适合您的可接受的“弹性”。

您需要先检查您的播放器是否位于盒子顶部,否则您的播放器只会向下飞行。

关于c# - 平台物理 - XNA Farseer C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858918/

相关文章:

c# - 构建 OpenGL C# 应用程序来替换 GDI 是否明智

java - 如何沿着特定轨迹放置物体?

2d - fftw c2c : missing symmetry in transformed real data

c# - 联合或逻辑或在两个 CGPaths(或 CAShapeLayers)上创建一个

c# - 将 Lua 与 C#/Mono 结合使用

xna - 良好的 AI 引用所需的建议

c# - 防止实体在头顶射击游戏中相互堆叠

c# - 物理引擎的计算顺序和迭代

c# - System.Text.Json:使用自动转换反序列化 JSON

c# - 为什么 BitmapSource.Create 会抛出 ArgumentException?