我有一个场景(SKScene),其中,每当执行一次点击时,球(SKSprtieNode)就会从该点掉落。 现在我要做的是,无论何时进行球的咔嗒声,球都应该反弹或什么的。
我在GameScene.m中拥有的是
- (void)mouseDown:(NSEvent *)theEvent {
CGPoint location = [theEvent locationInNode:self];
[self addBallAtLocation:location];
}
- (void)addBallAtLocation:(CGPoint) location {
Ball *ball = [Ball new];
ball.position = location;
[self addChild:ball];
}
在Ball.m中,我将反弹动作添加到mouseDown方法:
- (void)mouseDown:(NSEvent *)theEvent{
CGPoint point = [theEvent locationInNode:self];
CGVector impulse = CGVectorMake(point.x * 5.0, point.y * 5.0);
[self.physicsBody applyImpulse:impulse];
}
现在即使点击现有的球,也会创建一个新球。我认为自从我点击它之后就会调用球的mouseDown方法,如果不存在,则会调用场景的mouseDown方法。
P.S。我觉得这可以通过代表来解决,我很容易出错,但由于我并不完全清楚使用它们,所以我没有。如果您认为这可能是解决此问题的好方法,请使用它们,因为它可以帮助我了解如何使用它们。
答案 0 :(得分:0)
默认情况下,SKSpriteNode
将userInteractionEnabled
属性设置为NO
(当然是出于性能原因)。您只需将其设置为YES
,您的事件处理方法将被调用:)