Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 更换SKSpriteNode框架?等距挑战_Objective C_Frame_Sprite Kit_Bounding Box - Fatal编程技术网

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属性内。希望这能帮到别人!