当前位置: 首页 > 知识库问答 >
问题:

仅检测矩形物理体一侧的碰撞-Swift3

洪俊捷
2023-03-14

我目前正在开发一款2D无休止跑者,用Swift3编写,并使用Spritekit。

简短的问题:

有没有办法只检查我的角色的矩形物理体右侧的碰撞?

更多信息:

角色运行的平台由拼图块组成,用户在游戏进行时在此基础上进行构建。角色从左到右,相对于背景(从右到左)。

我希望角色在与右侧的棋子相撞时自动跳跃。然而,玩家放在他右边的任何棋子(与角色的Y值相同)都与他下面的棋子属于同一等级。

因此,只要游戏检测到角色和他下面的棋子之间的碰撞,检查角色和他右边的棋子之间的碰撞并让他跳的代码也会让他跳。

我还没能找到像我这样的问题,因为通常其他人的角色会与他们地面职业不同等级的物体碰撞。

谢谢

另外,我试图让我的角色成为一个有两个物理体的SKSpriteNode,但是我找不到任何有用的留档。如果有帮助的话,我的角色还会执行循环运行动画——尽管我无法想象这会有什么伤害。

共有3个答案

饶骁
2023-03-14

一旦获得两个碰撞物体的接触点,通过检查类别掩码确定哪个物体是碰撞物体,然后检查其CGPoints x位置。这个x位置可以与另一个物体的x位置进行比较,以准确地知道它是从哪一侧碰撞的。

如果身体A的x位置

就这么简单。希望这有所帮助!

段恩
2023-03-14

你有没有尝试过给你的角色的精灵节点添加一个不可见的子节点(比如feetNode ),并给这个子节点一个接触地面的物理实体(类)?

根据逻辑的其余部分,它可能允许您为角色使用不同的物理类,从而在碰撞检测方面具有更大的灵活性。

事实上,你可以在角色的精灵节点中的几个子节点上使用这种方法,并根据角色被击中的情况对角色进行多次碰撞行为。

相化
2023-03-14

您可以通过检测与矩形的碰撞来实现这一点,然后确定碰撞是否与您感兴趣的边有关。这里讨论一下如何做到这一点。祝你好运!

 类似资料:
  • 我花了数小时寻找解决方案:我正在用libgdx开发一个自上而下的小游戏(可能这与我使用的引擎有关)。现在我必须在我的角色(圆形)和墙(矩形)之间实现碰撞检测。如果可以滑动,我希望角色在碰撞时沿着墙滑动。让我解释一下: 如果我向上移动45度,我可能会撞到墙的下面、左边或角落。 如果我与左边相撞,我想停止x运动,只向上移动。如果我离开墙壁,那么我想继续向上移动。与下侧相同(停止y运动) 如果我与角落相

  • 问题内容: 我遇到一个问题,即一个矩形与另一个矩形发生碰撞。所以我的问题是,如何获取相交方法以检查碰撞?还是在这种情况下还有其他方法可以处理碰撞? 我正在创建一个回合制战斗游戏(类似于《最终幻想》或《龙骑传奇》),其中玩家的角色在屏幕的右侧,而敌人在屏幕的左侧。玩家和敌人轮流进攻。因此,当玩家攻击时,子画面动画会从右到左在屏幕上移动,直到停在敌人面前,进行攻击并返回到其起始坐标。玩家和敌人周围都有

  • 我遇到了一个问题,显示一个矩形与另一个矩形发生了碰撞。所以我的问题是,如何让Intersect方法检查碰撞?或者在这种情况下有其他方法来处理碰撞吗? 我正在制作一个回合制战斗游戏(类似于《最终幻想》或《龙骑兵传说》),其中玩家的角色位于屏幕的右侧,敌人位于屏幕左侧。玩家和敌人轮流攻击。因此,当玩家攻击时,精灵动画会在屏幕上从右向左移动,直到它停在敌人面前,攻击并返回到其起始坐标。玩家和敌人都有一个

  • 因此,我创建了一个方法来检测球形球和矩形球之间的碰撞。我把它分成了4部分;它检测圆的顶部、圆的左侧、圆的底部、圆的右侧和矩形之间的碰撞。其中的两个工作是检测圆上的左点和矩形之间的碰撞,以及检测圆上的右点和矩形之间的碰撞。但是,不起作用的是,如果最上面的点或最下面的点接触矩形,就不会检测到碰撞,正如我记录if语句以查看是否输入它时所看到的那样。下面是我的代码(方法。getr()获取圆圈半径): 我已

  • 我在游戏中使用libGDX库。I用于检测两个矩形之间碰撞检测的用户重叠方法。 我想检测矩形上的触摸侧(顶部、底部、左侧或右侧): 谁能给我这个代码,但这需要快速的方法。 谢啦

  • 我正在编写一个游戏,涉及碰撞的一个移动的圆,由用户控制,和一个移动的矩形,由计算机控制。 完整的代码可以在这里找到:游戏 我在圆和矩形之间的碰撞检测方面遇到了麻烦。当矩形是静态的,碰撞检测工作完美。当圆和矩形的边缘在任一边接触时,程序就会按照它应该的方式进行操作。 这是碰撞检测功能。 谢谢。