Objective c 更换SKSpriteNode框架?等距挑战
我希望我们能想出如何绕过这个有趣的挑战,我们正在设计一个等距风格的游戏。任何帮助都太棒了 问题 有没有办法将边界框框架从正方形更改为其他形状?也许用面具 问题 我们的问题是,我们需要节点的可攻丝区域不是正方形。由于我们正在平铺节点,它们的边界框彼此重叠,因此我们无法准确地点击所需的平铺。希望下面的图片能告诉你我们在设计什么,我们的问题,以及我们的可攻丝区域需要什么 有没有办法在精灵套件中改变这一点,或者是不可能使用等距样式Objective c 更换SKSpriteNode框架?等距挑战,objective-c,frame,sprite-kit,bounding-box,Objective C,Frame,Sprite Kit,Bounding Box,我希望我们能想出如何绕过这个有趣的挑战,我们正在设计一个等距风格的游戏。任何帮助都太棒了 问题 有没有办法将边界框框架从正方形更改为其他形状?也许用面具 问题 我们的问题是,我们需要节点的可攻丝区域不是正方形。由于我们正在平铺节点,它们的边界框彼此重叠,因此我们无法准确地点击所需的平铺。希望下面的图片能告诉你我们在设计什么,我们的问题,以及我们的可攻丝区域需要什么 有没有办法在精灵套件中改变这一点,或者是不可能使用等距样式 再次提前感谢。我已经深入到这条道路上,我可以说,实现自己的命中检测比强
再次提前感谢。我已经深入到这条道路上,我可以说,实现自己的命中检测比强迫spritekit执行计划要容易得多 没那么难。只需在您的磁贴上执行自定义hittest功能,并在鼠标下键时循环所有磁贴,然后测试所有磁贴
有一个非常简单的算法来测试你的形状,但公平地说,你可能只需要测试钻石形状的内圈,所以只需测试到精灵中心的距离是否<点击圆的半径。简单明了。可以通过路径[SKPhysicsBody body withedgeloopfrompath:(CGPath)]创建SKPhysicsBody; 您必须调整路径以获得所需的形状,但如果您仅将其用于平铺,则应该可以 检查Node.PhysicsBody是否包含接触点
如果你需要这个方法,请告诉我 我很想知道如何解决这个问题。SKSpriteNode的帧是只读属性,因此无法更改它。框架不能是矩形以外的任何东西,也不能旋转。我想你必须用UIBezierPath和这个很棒的SKButton类创建一个自定义形状的按钮:我知道现在已经晚了,但我想出了一个解决我遇到的类似问题的方法。本质上,创建一个子类SKSPriteNode,并赋予它一个UIBezierPath属性菱形的形状。在touchesbreated:方法中,检查触摸的位置是否位于UIBezierPath属性内。希望这能帮到别人!