我怎样才能获得可与使用的字体名称列表SpriteKit的labelNodeWithFontNamed方法是什么?
有一种方法SKLabelNode可以指定字体名称,但我想知道支持哪些字体以及它们的名称.
例:
[SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
Run Code Online (Sandbox Code Playgroud) @property (SK_NONATOMIC_IOSONLY, getter = isPaused) BOOL paused;
Run Code Online (Sandbox Code Playgroud)
我发现这行代码可以添加到我的项目中,我将如何暂停整个游戏?
例如:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
for (UITouch *touch in touches)
{
SKSpriteNode *pause = (SKSpriteNode*)[self childNodeWithName:@"pause"];
CGPoint location = [touch locationInNode:self];
// NSLog(@"** TOUCH LOCATION ** \nx: %f / y: %f", location.x, location.y);
if([pause containsPoint:location])
{
NSLog(@"PAUSE GAME HERE SOMEHOW");
}
}
Run Code Online (Sandbox Code Playgroud)
}
如您所见,我已设置按钮.当我选择它时,我将如何暂停整个场景?然后当有人点击恢复按钮时恢复它.
好的,我有一些建议打电话
self.scene.view.paused = YES;
Run Code Online (Sandbox Code Playgroud)
除了这是问题,在我的app委托中
- (void)applicationWillResignActive:(UIApplication *)application{
SKView *view = (SKView *)self.window.rootViewController.view;
view.paused = YES;}
Run Code Online (Sandbox Code Playgroud)
和
- (void)applicationDidBecomeActive:(UIApplication *)application{
SKView *view = (SKView *)self.window.rootViewController.view;
view.paused = NO; …Run Code Online (Sandbox Code Playgroud) 每当我运行我的精灵工具包应用程序时,都会不断记录此错误.这使得调试变得非常困难,因为日志中充满了这些消息.它们似乎不会影响应用程序的运行方式,因此简单地抑制错误就足够了.任何人都知道如何解决这个问题?
我是iOS和Sprite Kit编程的新手,并想知道如何组合:
-[SKAction runAction:withKey:]
Run Code Online (Sandbox Code Playgroud)
和
-[SKAction runAction:completion:]
Run Code Online (Sandbox Code Playgroud)
一方面,我想阻止一个节点再次运行相同的动作(或动作序列),另一方面,我想对一个动作的终止作出反应,但是没有方法,据我所知,无法同时使用两者.
谢谢
作为一个学习练习,我试图实现一个子类,SKShapeNode它提供了一个新的便利初始化器,它接受一个数字并构造一个ShapeNode,它是一个数字宽度和高度的正方形.
根据Swift Book:
规则1
如果您的子类没有定义任何指定的初始值设定项,它会自动继承其所有超类指定的初始值设定项.
规则2
如果您的子类提供了所有超类指定初始化程序的实现 - 通过按照规则1继承它们,或者通过提供自定义实现作为其定义的一部分 - 那么它会自动继承所有超类便利初始化程序.
但是,以下类不起作用:
class MyShapeNode : SKShapeNode {
convenience init(squareOfSize value: CGFloat) {
self.init(rectOfSize: CGSizeMake(value, value))
}
}
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
Playground execution failed: error: <REPL>:34:9: error: use of 'self' in delegating initializer before self.init is called
self.init(rectOfSize: CGSizeMake(value, value))
^
<REPL>:34:14: error: use of 'self' in delegating initializer before self.init is called
self.init(rectOfSize: CGSizeMake(value, value))
^
<REPL>:35:5: error: self.init isn't called on all paths in delegating initializer
} …Run Code Online (Sandbox Code Playgroud) 我需要有一个粒子发射器效果在2个点出现重复(为了分屏目的),我想知道是否有人遇到过这样做的方法.我的目标是在iOS 10上运行.这是我到目前为止所尝试的.
targetNode给一个SKNode然后复制SKNode每一帧:targetNode对我来说在iOS 10中不起作用. SKNode,并使用view.textureFromNode纹理来复制每一帧:占用帧的1/120,对我来说太慢了. SKNode:操作不会在iOS 10上运行 我留给真正发光的唯一选择是写我自己的粒子发射器,我试图避免,所以我想知道是否有其他人有这个问题,并知道一个解决方案,以达到预期的效果.
我能做的另一件事是预渲染发射器,但如果我走这条路线,这将占用大量纹理内存.
编辑:为了帮助可视化,我绘制了一张图片,白色边框显示了分屏的位置.黑色边框显示场景包装发生的位置.

截至目前,玩家1和玩家2都在原始场景中.
球员2正在向右走,即将击中一个世界包裹将他移到世界的左手边,但他还没有击中它.所以我需要有一个场景的副本,以便它在视觉上看起来像一个场景.由于播放器1仍在原始场景上,原始发射器需要保持原位.玩家2将不得不在副本中看到相同的图像,否则一旦他通过该边界,就会发生"毛刺"效果,现在包裹的幻觉消失了.
最后结果:
我们只是说F %%%它,播放器1和播放器2将查看不同的发射器节点,我们将在需要时将发射器连接到每个播放器相机.
我正在使用名为Sprite Kit的新API开发iOS7游戏.我想水平旋转SKSpriteNode图像/纹理.我已经尝试过首先镜像图像,然后创建一个SKTexture,最后将它应用到SKSpriteNode,但它不起作用.有办法做到这一点吗?或者我应该有不同的图像?
我正在制作游戏,我在旋转精灵节点时遇到了麻烦,这就是我的代码; 我需要添加什么来转动它,比方说45度?
SKSpriteNode *platform = [SKSpriteNode spriteNodeWithImageNamed:@"YellowPlatform.png"];
platform.position = CGPointMake(CGRectGetMidX(self.frame), -200+CGRectGetMidY(self.frame));
platform.size = CGSizeMake(180, 10);
platform.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:platform.size];
platform.physicsBody.dynamic = NO;
[self addChild:platform];
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建类,它是SKSpriteNode的子类,我想为它添加其他属性和函数.但是在第一步中我遇到了一个错误.这是我的代码:
import SpriteKit
class Ball: SKSpriteNode {
init() {
super.init(imageNamed: "ball")
}
}
Run Code Online (Sandbox Code Playgroud)
这不是编译错误,它是运行时错误.我该如何解决?
我刚开始使用swift进行ios开发,我无法弄清楚如何绘制圆圈.我只想绘制一个圆圈,将其设置为变量并显示在屏幕上,以便我以后可以将其用作主要播放器.谁能告诉我怎么做或者为我提供代码?
我在网上找到了这个代码:
var Circle = SKShapeNode(circleOfRadius: 40)
Circle.position = CGPointMake(500, 500)
Circle.name = "defaultCircle"
Circle.strokeColor = SKColor.blackColor()
Circle.glowWidth = 10.0
Circle.fillColor = SKColor.yellowColor()
Circle.physicsBody = SKPhysicsBody(circleOfRadius: 40)
Circle.physicsBody?.dynamic = true //.physicsBody?.dynamic = true
self.addChild(Circle)
Run Code Online (Sandbox Code Playgroud)
但当我把它放在xcode上运行应用程序时,游戏场景中没有任何内容.
sprite-kit ×10
ios ×6
swift ×5
ios7 ×3
objective-c ×2
skspritenode ×2
cgpoint ×1
cocoa ×1
cocoa-touch ×1
image ×1
rotation ×1
skscene ×1
skshapenode ×1
skview ×1
subclass ×1
xcode ×1