使用SpriteKit弹射?

时间:2014-02-25 19:59:26

标签: ios sprite-kit

我正在开发使用SpriteKit开发的基于投射的游戏。 但是,我不知道如何实现物理。

任何人都可以提供有关如何开始实施它的任何提示吗?

1 个答案:

答案 0 :(得分:4)

以下是如何了解如何实施此类游戏的想法。

让我们创造一个我们将投掷的球。首先,我们需要一个属性:

@property(nonatomic, strong) SKShapeNode *ball;

然后我们必须为我们的球创建一个SKShapeNode并设置它的物理主体:

-(id)initWithSize:(CGSize)size 
{
    if (self = [super initWithSize:size]) 
    {
        _ball = [[SKShapeNode alloc] init];

        // Create a circle.
        CGMutablePathRef circle = CGPathCreateMutable();
        CGPathAddArc(circle, NULL, 0,0, 60, 0, M_PI*2, YES);

        // Set the shape of our ball and its color.
        _ball.path = circle;
        _ball.fillColor = [SKColor blueColor];
        _ball.position = CGPointMake(200, 200);

        // Create a circular physics body.
        _ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:60];

        [self addChild:_ball];

        // Create a physics body that borders the screen.
        SKPhysicsBody* borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];

        // Set physicsBody of scene to borderBody.
        self.physicsBody = borderBody;
    }

    return self;
}

然后让我们对所需anglemagnitude的球施加冲动:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    CGFloat angle = M_PI_4;
    CGFloat magnitude = 1000;

    [_ball.physicsBody applyImpulse:CGVectorMake(magnitude*cos(angle),
                                                 magnitude*sin(angle))];
}

在您的实施中,您需要使用touchesBegantouchesMoved方法计算角度和幅度值,并在touchesEnded中应用脉冲。

这应该会给你一个启动。希望它有所帮助。