【问题标题】:Visual C#- Game Character gets all "jumpy" when checking for collisionVisual C#- 游戏角色在检查碰撞时变得“跳跃”
【发布时间】:2014-08-07 02:55:00
【问题描述】:

我正在制作我的第一个游戏!这是一个非常简单的 2D 游戏,只是一个可以跑来跑去跳块的角色。

我的计时器的时间间隔是 1,每次滴答都会检查玩家和方块之间的碰撞。由于某种原因,角色没有“跳跃”的唯一块是检查它的碰撞的最后一个块。也许多线程可以工作?

这是我的第一个游戏,如果代码混乱,非常抱歉。我将我的代码分成两部分(使用 pastebin,因为它很长,至少对我来说是这样):

  1. 整个游戏代码:http://pastebin.com/GX4PtUuL

  2. 我认为需要的:http://pastebin.com/GEBEinm8

如果您需要我告诉您更多信息,请随时询问。请记住,我不是“高级”程序员,所以我不会理解所有内容。

提前致谢!

【问题讨论】:

  • 我没有看代码,但不是运行一个恒定的计时器来检查碰撞,你不能每次移动角色时检查碰撞吗?假设您按右箭头向右运行,按下它会检查它是否可以移动,或者是否有碰撞。在这种情况下,当您不动时,游戏会“无所事事”,因此不会出现故障。
  • 如果你的意思是timer1.Interval == 1,那就有点乐观了。我怀疑任何人的屏幕刷新率为 1000 Hz。您可以尝试将值增加到 20。
  • 很遗憾,您的两个解决方案均无效。

标签: c# visual-studio-2010 collision-detection


【解决方案1】:

好的,我现在已经查看了您的代码。

好像基本没问题;尤其是Tick 事件中的碰撞检查正确的,因为您使用的是及时起作用的重力。

它工作正常,但只有在计时器速度足够慢的情况下,我发现大约 100 毫秒才能正常工作..

这里的提示应该可以进一步帮助您:像素、位置等都是integers 但是玩家位置和速度/力量真的应该存储和计算为floats 这样你就可以微调了,尤其是速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多