我尝试使用spriteKit创建一个应用程序,当用户触摸精灵节点时,会出现一条NSLog消息,表明该节点已被触摸。 我尝试将触摸节点的名称与我检查是否被触摸的节点名称进行比较。问题是系统识别出节点被触摸了,尽管它没有触及。我认为节点区域存在问题,系统认为节点在某处,而绝对不是。
-(void)selectNodeForTouch:(CGPoint)touchLocation
{
if([[touchedNode name] isEqualToString:@"menuPlayButton"]){
NSLog(@"Pressed");
}
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
for (UITouch *touch in touches) {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
CGPoint positionInScene = [touch locationInNode:self];
[self selectNodeForTouch:positionInScene];
}
}
任何想法可能是什么问题? 提前致谢
答案 0 :(得分:0)
您的selectNodeForTouch:
方法完全错误。它使用touchedNode
变量,该变量未在您发布的代码中的任何位置定义。此方法应如下所示:
- (void)selectNodeForTouch:(CGPoint)touchLocation
{
NSArray *nodes = [self nodesAtPoint:touchLocation];
for (SKNode *node in nodes) {
if([node.name isEqualToString:@"menuPlayButton"]) {
NSLog(@"Pressed");
}
}
}