【问题标题】:Setting items coordinates after a collision i 2D platformer在碰撞后设置项目坐标 i 2D 平台游戏
【发布时间】:2014-04-07 15:13:32
【问题描述】:

作为一个主题:

我的platformer-style game 中的finalizing collision detection 有问题。

我使用矩形方法来做到这一点,collision detection works fine 那里。

问题是:我的游戏应该按什么顺序查找colisions?因为如果我首先检查玩家是否“站在”平台上然后在侧面发生碰撞,游戏就会变得混乱,然后玩家从侧面撞击平台,而在空中(在跳跃期间)。它将玩家传送到“站立”位置,然后忽略侧面碰撞。
当我将游戏设置为首先检查侧面碰撞时,当玩家降落在平台上时,他会被传送到平台的左侧或右侧。 我明白发生了什么,但我不知道如何解决这个问题。
如果您希望我发布更多信息/代码,请告诉我。
谢谢!

【问题讨论】:

  • 你能做的就是不要在发生碰撞时立即采取行动。但是将标志设置为“bottomCollded”或“sideCollided”......然后检查是否检查了两个标志或只检查一个,然后采取行动。
  • @DavorMlinaric 我已经尝试过了,但是我在识别正确碰撞时遇到了问题,请看这张图片link。在案例 1 中,玩家(红色方块)从侧面撞击平台时应该向左移动,在案例 2 中,它应该在落到平台上时向顶部移动一点。在这两种情况下,碰撞检测都将 collisionBottam 和 collisionRight 返回为 true。这让我有点困惑

标签: xna 2d


【解决方案1】:

在您的情况下,碰撞可能同时发生在顶部和左侧。我目前的想法是确定它从顶部和左侧碰撞了多少像素。然后根据这些值你只改变一个方向。

在这个例子中,假设蓝色物体正在下落。它与红色相交,距顶部 3 px,距左侧 15 px。结果是将对象向上移动 3 px 以站在其他对象上。因为基于碰撞,它更多地位于对象的“顶部”而不是“侧面”。

以及如何获取可以使用的重叠值:Rectangle.Intersect(rectangle, rectangle) 并将返回这些值。

可能有更好的解决方案,但我现在想到的是。

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多