标签: sprite-kit

可以与SpriteKit的labelNodeWithFontNamed方法一起使用的字体列表

我怎样才能获得可与使用的字体名称列表SpriteKit的labelNodeWithFontNamed方法是什么?

有一种方法SKLabelNode可以指定字体名称,但我想知道支持哪些字体以及它们的名称.

例:

[SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
Run Code Online (Sandbox Code Playgroud)

cocoa-touch ios sprite-kit

24
推荐指数
1
解决办法
2万
查看次数

暂停精灵套件场景

@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)

ios7 sprite-kit skview skscene

24
推荐指数
1
解决办法
1万
查看次数

CUICatalog:无效请求:请求子类型而不指定习语

每当我运行我的精灵工具包应用程序时,都会不断记录此错误.这使得调试变得非常困难,因为日志中充满了这些消息.它们似乎不会影响应用程序的运行方式,因此简单地抑制错误就足够了.任何人都知道如何解决这个问题?

xcode ios sprite-kit

24
推荐指数
1
解决办法
5478
查看次数

SKAction如何与Key结合并完成

我是iOS和Sprite Kit编程的新手,并想知道如何组合:

-[SKAction runAction:withKey:]
Run Code Online (Sandbox Code Playgroud)

和

-[SKAction runAction:completion:]
Run Code Online (Sandbox Code Playgroud)

一方面,我想阻止一个节点再次运行相同的动作(或动作序列),另一方面,我想对一个动作的终止作出反应,但是没有方法,据我所知,无法同时使用两者.

谢谢

objective-c ios7 sprite-kit skspritenode

23
推荐指数
2
解决办法
4073
查看次数

在Swift子类中添加Convenience Initializers

作为一个学习练习,我试图实现一个子类,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)

cocoa ios sprite-kit swift

23
推荐指数
3
解决办法
2万
查看次数

在Sprite Kit中复制粒子发射器效果

我需要有一个粒子发射器效果在2个点出现重复(为了分屏目的),我想知道是否有人遇到过这样做的方法.我的目标是在iOS 10上运行.这是我到目前为止所尝试的.

  1. 分配targetNode给一个SKNode然后复制SKNode每一帧:targetNode对我来说在iOS 10中不起作用.
  2. 将粒子发射器分配给a SKNode,并使用view.textureFromNode纹理来复制每一帧:占用帧的1/120,对我来说太慢了.
  3. 将自定义操作分配给将节点复制到另一个节点的粒子节点SKNode:操作不会在iOS 10上运行
  4. 复制现有的粒子节点,希望种子不是随机的:种子是随机的
  5. 尝试在更新时复制粒子发射器:粒子只在原点产生
  6. 尝试SKReferenceNode:只是发射器的副本,自己运行

我留给真正发光的唯一选择是写我自己的粒子发射器,我试图避免,所以我想知道是否有其他人有这个问题,并知道一个解决方案,以达到预期的效果.

我能做的另一件事是预渲染发射器,但如果我走这条路线,这将占用大量纹理内存.

编辑:为了帮助可视化,我绘制了一张图片,白色边框显示了分屏的位置.黑色边框显示场景包装发生的位置. 在此输入图像描述

截至目前,玩家1和玩家2都在原始场景中.

球员2正在向右走,即将击中一个世界包裹将他移到世界的左手边,但他还没有击中它.所以我需要有一个场景的副本,以便它在视觉上看起来像一个场景.由于播放器1仍在原始场景上,原始发射器需要保持原位.玩家2将不得不在副本中看到相同的图像,否则一旦他通过该边界,就会发生"毛刺"效果,现在包裹的幻觉消失了.

最后结果:

我们只是说F %%%它,播放器1和播放器2将查看不同的发射器节点,我们将在需要时将发射器连接到每个播放器相机.

sprite-kit skemitternode swift

23
推荐指数
1
解决办法
745
查看次数

水平镜像SKSpriteNode纹理

我正在使用名为Sprite Kit的新API开发iOS7游戏.我想水平旋转SKSpriteNode图像/纹理.我已经尝试过首先镜像图像,然后创建一个SKTexture,最后将它应用到SKSpriteNode,但它不起作用.有办法做到这一点吗?或者我应该有不同的图像?

image objective-c ios7 sprite-kit swift

22
推荐指数
2
解决办法
1万
查看次数

如何在sprite kit中旋转精灵节点?

我正在制作游戏,我在旋转精灵节点时遇到了麻烦,这就是我的代码; 我需要添加什么来转动它,比方说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)

rotation ios sprite-kit

22
推荐指数
6
解决办法
4万
查看次数

使用Swift创建SKSpriteNode子类

我正在尝试创建类,它是SKSpriteNode的子类,我想为它添加其他属性和函数.但是在第一步中我遇到了一个错误.这是我的代码:

import SpriteKit

class Ball: SKSpriteNode {
    init() {
        super.init(imageNamed: "ball")
    }
}
Run Code Online (Sandbox Code Playgroud)

这不是编译错误,它是运行时错误.我该如何解决?

subclass ios sprite-kit skspritenode swift

22
推荐指数
1
解决办法
1万
查看次数

如何使用spriteKit在swift中绘制圆圈?

我刚开始使用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上运行应用程序时,游戏场景中没有任何内容.

cgpoint ios sprite-kit skshapenode swift

22
推荐指数
2
解决办法
2万
查看次数