gpt4 book ai didi

sprite-kit - SpriteKit 检测范围

转载 作者:行者123 更新时间:2023-12-03 13:02:16 24 4
gpt4 key购买 nike

我正在制作小型/中型 RTS 游戏,我有以下需求:

我希望敌人玩家在每个攻击范围内攻击盟友,反之亦然。

我的问题是:如果敌方单位在盟军的攻击范围内,或者反之亦然,那么寻找敌方单位的更好方法是什么?

我尝试了什么:

现在我尝试为每个单元节点添加 SKNodesSKPhysicsBodies

我可以看到当接触发生时 FPS 正在下降......我想这不是检测敌人是否在范围内的最佳方法。

我想我的替代方案是在 Update 方法中运行一些嵌套循环,并检查 Radius 内是否有敌方单位。我不确定这是否是最好的方法,但是通过这种方法我可能会使用一些参数并可能根据我自己的需要优化例程。

我想知道是否有更好的选择。

最佳答案

研究 GamePlayKit,

它可能有一些你想要的东西。

否则我只会使用欧氏距离公式 https://math.stackexchange.com/questions/139600/euclidean-manhattan-distance没有平方根,并根据小队而不是单个部队使用此值。 (因此,如果一组 4 名士兵正在攻击 5 名士兵的敌人,则只进行 1 次距离检查)。

之所以不用平方根,是因为你应该知道允许距离的平方。如果 10 像素外的敌人吸引了士兵,则使用 100。

最好的方式是把你的士兵当作小队,将他们全部添加到一个 SKNode(子类以添加更好的功能),然后你只需要比较这些小队 SKNode

如果您想减少检查次数,请考虑将您的游戏区域变成网格(像棋盘)。由于您知道瓷砖的大小,因此您可以轻松检查这些单元是否足够近以保证进行距离检查。例如。你在 a1 处有一个单位,在 i9 处有一个敌人,然后你仅通过瓦片距离就知道这些单位相距太远而无法相互攻击

关于sprite-kit - SpriteKit 检测范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39280654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com