我正在尝试制作游戏。在这个游戏中,我希望用户能够通过触摸放下精灵图标。但是,我想这样做,以便如果用户点击一个已经存在的精灵区域,那么通过触摸创建的新精灵将不会与现有的精灵重叠,而是转到最近的位置。
编辑:所以现在,我正在做的是每次我在视图中添加一个精灵,我也将它添加到一个精灵数组中,该精灵数组将跟踪当前使用创建的所有精灵。 [array addObject:newObject];
因此,如果用户创建一个新对象,我将首先通过循环遍历数组然后检查x和y位置来检查位置。
for(SKSpriteNode __strong *object in Objects){
if(touchedObject.position.x != object.position.x
&& touchedObject.position.y != object.position.y){
//add the sprite
}
}
我遇到的第一个问题是该位置返回0.0000
答案 0 :(得分:1)
你编码的东西不足以在触摸位置找到精灵存在与否。您必须实现一些SKNode方法进行检测。请记住,SKSpriteNode继承自SKNode类,因此您可以直接使用SKNode方法。使用以下方法,
- (CGPoint)convertPoint:(CGPoint)point fromNode:(SKNode *)node
- (BOOL)containsPoint:(CGPoint)p
- (BOOL)intersectsNode:(SKNode *)node
- (SKNode *)nodeAtPoint:(CGPoint)p
有助于您解决问题。 有关详细信息,您需要浏览apple doc.