用弹性愤怒的小鸟雪碧套件重现弹射器



我想创建一个像愤怒的小鸟这样的弹弓,我的问题是我如何创建一个弹性,当我加载发射并挂在我的弹弓上时,它会跟随我的精灵(例如一只鸟)?

我怎样才能用雪碧套件做到这一点?

谢谢你的帮助。

这种逻辑编码你真的需要自己弄清楚。我会给你一些工作。这是来自我的个人原型:

-(void)fireRocket
{
if (timesRan <= 0) {
    timesRan++;
}
else
{
    [self enumerateChildNodesWithName:@"rocket" usingBlock: ^(SKNode *node, BOOL *stop) {
        SKSpriteNode *rocket = (SKSpriteNode *) node;
        [rocket removeFromParent];
        [rocket removeAllActions];
    }];
}
SKSpriteNode * rocket = [SKSpriteNode spriteNodeWithImageNamed:@"rocket-310663_150"];
rocket.size = CGSizeMake(30, 32);
rocket.name = @"rocket";
rocket.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:16];
rocket.position = CGPointMake(50, 185);


//CGFloat angle = M_PI_4;
CGFloat magnitude = 26;
CGFloat angle = [self angleOfRocketFire];
//CGFloat angle = M_PI_4;

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

-(CGFloat)angleOfRocketFire
{
__block CGFloat angle;
__block CGPoint handlePosition;
[self enumerateChildNodesWithName:@"handle" usingBlock: ^(SKNode *node, BOOL *stop) {
    SKSpriteNode *handle = (SKSpriteNode *) node;
    CGFloat xCoord = handle.position.x + (handle.size.width  / 2);
    CGFloat yCoord = handle.position.y + (handle.size.height / 2);
    handlePosition =  CGPointMake(xCoord, yCoord);
}];
[self enumerateChildNodesWithName:@"rocketLauncher" usingBlock: ^(SKNode *node, BOOL *stop) {
    SKSpriteNode *rocketLauncher = (SKSpriteNode *) node;

    CGFloat xCoord = rocketLauncher.position.x + (rocketLauncher.size.width  / 2);
    CGFloat yCoord = rocketLauncher.position.y + (rocketLauncher.size.height / 2);
    CGPoint launcherPosition =  CGPointMake(xCoord, yCoord);
    CGFloat slope = (handlePosition.y - launcherPosition.y) / (handlePosition.x - launcherPosition.x);
    //angle = atan(slope);
    angle = atan(slope);
    NSLog(@"%f", slope);
}];

return angle;
}

最新更新