触摸事件,多个游戏对象?

时间:2013-11-06 02:09:35

标签: ios objective-c sprite-kit

请指向我在线教程或示例,或演示操作方法 - 演示如何使用Touch事件进行单指触摸,然后在我的视图中滑动选择多个游戏对象?我一直在网上和Ap​​ple Dev Docs上找不到任何有用的东西(并不意味着它不在那里,只是意味着我找不到它)。

这是我的情景:

我有3个敌人游戏对象朝着我的英雄游戏对象移动。我想触摸一个敌人的游戏物体(激活它),然后滑动以选择另一个2,这将摧毁所有敌人(我可以处理的部分,实施正确的触摸事件并让这些事件识别我的游戏物体,这个具体的场景,就是我被困住的地方。

具体细节: 使用适用于iOS的XCode 5(Obj C),Sprite Kit(不确定这些细节是否重要,但是在案例中)。

1 个答案:

答案 0 :(得分:2)

Searching for Physics Bodies给出了一个很好的例子,说明如何使用光线投射来测试物理体在指定路径上的场景中的位置。

您可以为每个enumerateBodiesAlongRayStart:end:usingBlock:事件调用touchesMoved,但作为优化,您可以计算最接近的对象与当前触摸点的对应关系,并仅执行碰撞测试一旦你的手指足够接近。

使用这种技术要记住的事情是射线点必须在场景坐标中。所以你可能需要使用类似的东西:

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
  CGPoint sceneTouchPoint = [[touches anyObject] locationInNode:self];
  [self.physicsWorld enumerateBodiesAlongRayStart:self.lastSceneTouchPoint end:sceneTouchPoint usingBlock:^(SKPhysicsBody *body, BOOL *stop) {
    NSLog(@"Node: %@", body.node);
  }];

  self.lastSceneTouchPoint = sceneTouchPoint;
}