我向后退了一步,为我正在制作的2D游戏学习精灵套件,而不是使用UIKit.在我经历过的所有教程中,他们将新项目创建为Sprite-Kit而不是单视图.只是想知道我是否必须重新创建我的游戏,或者我是否可以简单地将sprite kit框架添加到我现有的项目中?谢谢.
我正在处理一段代码,我希望视图中有引力,但我希望特定的抛射物能够抵抗重力并飞过屏幕.我知道在整个视图中摆脱重力只是:
self.physicsWorld.gravity = CGVectorMake(0, 0);
Run Code Online (Sandbox Code Playgroud)
但正如所述,我希望重力在现场.
所以我想知道是否有办法将重力从特定项目中解脱出来?(即SKSpriteNode _debris我案中的项目)
只是尝试增强这部分代码,我想知道我是否可以在序列中包含if语句?当碎片数大于10时,我想减缓碎片的产生.
这是当前的代码:
-(void)spawnDebris {
//debris
SKSpriteNode * debris = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"debris1.png"] size:CGSizeMake(40, 40)];
debris.zPosition = 1.0;
debris.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:15];
debris.physicsBody.allowsRotation = NO;
debris.physicsBody.categoryBitMask = CollisionDebris;
RandomPosition = arc4random() %248;
RandomPosition = RandomPosition + 34;
debris.position = CGPointMake (RandomPosition, self.size.height + 40);
[_debris addObject:debris];
[self addChild:debris];
//next Spawn:
[self runAction:[SKAction sequence:@[
[SKAction waitForDuration:2],
[SKAction performSelector:@selector(spawnDebris) onTarget:self],
]]];
if (_dead == YES) {
[self removeAllActions];
}
}
Run Code Online (Sandbox Code Playgroud)
哪里_debris是NSMutableArray.所以基本上SKSpriteNodes每2秒钟就会增加一次,但要改变它,我想waitForDurations在_debris计数超过一定数量后让它们改变.
这就是我的想法:
//next …Run Code Online (Sandbox Code Playgroud) 我正在研究一个精灵套件游戏,我无法弄清楚为什么它不会按照我想要的方式扩展我的图像.游戏是横向的.这是我遇到问题的代码:
SKSpriteNode *Pathway = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"path.png"] size:CGSizeMake(568, 220)];
Pathway.zPosition = -1.0;
Pathway.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
Pathway.name = @"Pathway";
[self addChild:Pathway];
Run Code Online (Sandbox Code Playgroud)
基本上我希望屏幕上的纹理如下: 
但由于某些原因,即使我更改纹理的大小(568,220),它也会缩放图像并且不适合屏幕.
我尝试使用的[Pathway setScale:0.7];是接近我正在寻找的尺寸,但我需要精确到568 x 220. 为什么即使我将其尺寸设置为568 x 220,它仍然会扭曲我的图像?
如果需要更多信息,请告诉我,我认为这应该足够了.