请指向我在线教程或示例,或演示操作方法 - 演示如何使用Touch事件进行单指触摸,然后在我的视图中滑动选择多个游戏对象?我一直在网上和Apple Dev Docs上找不到任何有用的东西(并不意味着它不在那里,只是意味着我找不到它)。
这是我的情景:
我有3个敌人游戏对象朝着我的英雄游戏对象移动。我想触摸一个敌人的游戏物体(激活它),然后滑动以选择另一个2,这将摧毁所有敌人(我可以处理的部分,实施正确的触摸事件并让这些事件识别我的游戏物体,这个具体的场景,就是我被困住的地方。
具体细节: 使用适用于iOS的XCode 5(Obj C),Sprite Kit(不确定这些细节是否重要,但是在案例中)。
答案 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;
}