Ios 以圆形图案拍摄对象SpriteKit
我真的不知道如何解释我想要什么,所以我画了一些(非常)艺术性的图表来帮助传达这个想法。我也会尽力解释清楚 我基本上是想从屏幕中央的一个圆圈“发射”子弹/激光/任何东西,并让它以相当快的速度重复这一过程。这里有两张照片显示了我想要实现的目标:(没有足够的声誉在这里发布它们 (一) 这就是我想要子弹射出的地方,我想要多少 (二) 这几乎就是最终的结果,我希望他们反复开火,让屏幕看起来像这样Ios 以圆形图案拍摄对象SpriteKit,ios,xcode,sprite-kit,sprite,skaction,Ios,Xcode,Sprite Kit,Sprite,Skaction,我真的不知道如何解释我想要什么,所以我画了一些(非常)艺术性的图表来帮助传达这个想法。我也会尽力解释清楚 我基本上是想从屏幕中央的一个圆圈“发射”子弹/激光/任何东西,并让它以相当快的速度重复这一过程。这里有两张照片显示了我想要实现的目标:(没有足够的声誉在这里发布它们 (一) 这就是我想要子弹射出的地方,我想要多少 (二) 这几乎就是最终的结果,我希望他们反复开火,让屏幕看起来像这样 有人能告诉我为了达到这个目的我应该看什么吗?据我所知,你希望这个精灵每X秒发射一束射弹 SKActio
有人能告诉我为了达到这个目的我应该看什么吗?据我所知,你希望这个精灵每X秒发射一束射弹
SKAction *ShootProjectiles = [SKAction runBlock:^{
//Create Projectile1
projectile1.physicsBody.applyImpulse(CGVectorMake(1, 0)); //Shoot directly right
//Create Projectile2
projectile2.physicsBody.applyImpulse(CGVectorMake(1, 1)); //Shoot diagnally Up and to the right
//Follow this pattern to create all projectiles desired to be shot in one burst
}];
SKAction *delayBetweenShots = [SKAction scaleBy:0 duration:5];
SKAction* ShootSequence= [SKAction repeatActionForever:[SKAction sequence:@[ShootProjectiles, delayBetweenShots]]];
[self runAction: ShootSequnce];
这样做的目的是创建所需数量的投射物,并沿所定义向量的方向发射它们。然后等待5秒(scaleBy:0操作除了延迟之外什么都不做)然后一次又一次地重复,直到你移除动作。在处理圆时,通常更容易使用极坐标。在这种情况下,每个方向都可以用大小和角度表示,其中大小是施加到子弹上的力/冲量,角度是射击公牛的方向et 基本步骤是
@implementation GameScene {
CGFloat angle;
SKTexture *texture;
CGFloat magnitude;
CGFloat angleIncr;
}
-(void)didMoveToView:(SKView *)view {
/* Setup your scene here */
long numAngles = 15;
magnitude = 1;
angleIncr = 2 * M_PI / numAngles;
angle = 0;
texture = [SKTexture textureWithImageNamed:@"Spaceship"];
SKAction *shootBullet = [SKAction runBlock:^{
SKSpriteNode *bullet = [SKSpriteNode spriteNodeWithTexture:texture];
bullet.size = CGSizeMake(8, 8);
bullet.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:bullet.size.width/2];
bullet.physicsBody.affectedByGravity = NO;
bullet.position = self.view.center;
bullet.zRotation = angle-M_PI_2;
[self addChild:bullet];
CGFloat dx = magnitude * cos(angle);
CGFloat dy = magnitude * sin(angle);
CGVector vector = CGVectorMake(dx,dy);
[bullet.physicsBody applyImpulse:vector];
angle = fmod(angle+angleIncr,2*M_PI);
}];
SKAction *wait = [SKAction waitForDuration:0.25];
SKAction *shootBullets = [SKAction sequence:@[shootBullet, wait]];
[self runAction:[SKAction repeatActionForever:shootBullets]];
}
在您的实现中,您到底被困在了什么地方?