与物体碰撞

时间:2015-06-24 21:57:04

标签: ios iphone swift

我是StackOverflow的新手,我的第一个问题是,如何在游戏中与对象发生碰撞,从场景中删除它们并在乐谱中加1。

为了帮助您更好地理解这个问题,这里有一个示例 :如果玩家与硬币发生碰撞,硬币将从场景中删除,它将添加1得分

我唯一的代码是生成钻石而且我不知道如何解决这个问题,我想我需要在beginContact或类似的东西中编写代码。如果有人可以帮我解决这个问题,我会很高兴。谢谢!

1 个答案:

答案 0 :(得分:1)

根据游戏的复杂程度,可以通过多种方式完成对象冲突。

  1. 最简单的方法是在2d或3d矩阵中跟踪整个字段,如果用户移动到与可获取对象相同的坐标中,则删除该对象并增加分数。当涉及到大型地图或复杂系统运行硬件内存不足时,这会有明显的问题。所以这适用于国际象棋/西洋棋棋盘,但不适用于驾驶模拟。

  2. 第二种方法是在字段上显示对象的链接列表及其中心坐标和绘图方向。对象可能看起来像coords (1007.2053, 489.2111) shape (box)。 box是一个生成所有边框坐标的函数。然后通过检查主目标是否与列表中的任何对象重叠来检测冲突。您可能必须为每个形状编写碰撞函数。形状越简单,碰撞功能越容易。对于更复杂的物体而言,将形状简化为盒子通常更容易,无论它看起来如何。这就是为什么3D游戏经常会出现剪辑错误的原因,以及为什么你可以用fps拍摄对象的边缘而仍然没有被认为是击中它。

  3. 您的问题太宽泛,无法获得更好的答案,但这是一个非常基本的article,讨论了第二种方法。

    更多信息。这场比赛显然是一个无尽的赛跑者。

    因此,您可以设置一个充当队列的二维矩阵。假设你的棋盘高3,那么你的角色可以走路,跳跃或跳高。

    highjump

    步行

    这将是一个简单的矩阵,如板10 X 3(x,y) 每个框架都会移除前面的柱子并在后面添加一个新柱子。认为前面的matix是左侧,后面是右侧。当添加到后面时,您随机决定将硬币放入哪个框。在每个框架中,用户必须处于3个位置中的一个位置。如果他的位置与收集它的对象相同并获得积分。或者如果对象不合意则会失去生命并开始游戏等等。

    更多链接

    特定于无尽的跑步者here的信息以及与您的here类似的另一个堆栈溢出问题