0

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

这是我的场景:

我有 3 个敌方游戏对象向我的英雄游戏对象移动。我想触摸一个敌人的游戏对象(激活它),然后滑动以选择其他 2 个,这将摧毁所有敌人(我可以处理的那部分,实现正确的触摸事件并让这些事件识别我的游戏对象,在这个特定的场景,就是我卡住的地方)。

细节:使用 XCode 5 (Obj C),Sprite Kit,用于 iOS(不确定这些细节是否重要,但以防万一)。

4

1 回答 1

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;
}
于 2013-11-06T03:35:53.780 回答