标签: skspritenode

我应该使用什么方法预加载精灵?

我知道你可以通过在游戏开始时创建它们来预加载spritenodes,但有没有更有效的方法呢?

ios sprite-kit skspritenode

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

如何确定单击了哪个SKSpriteNode?

我正在尝试使用SKSpriteNode作为从一个场景到下一个场景的过渡.我怎样才能做到这一点?

[编辑]请注意,这适用于OSX而非iOS.iOS的touchesBegan方法似乎在OSX中不起作用.

objective-c sprite-kit osx-mavericks skspritenode

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

如何在视图中获得子精灵的位置

我试图根据这里这个的答案视图中获得子精灵的位置

for child in platformGroupNode.children {
    CGPoint p = [child.superview convertPoint:child.center toNode:self.view ]
    println(p)
}
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何与SKSpriteNode孩子和SKNode父母一起使用。

我也没有运气尝试过

for child in platformGroupNode.children {
    var pos = child.position
    var viewPos = convertPoint(pos, toNode: self.parent!)
    if viewPos.x < 0 {
        println("Out of screen")
    }
}
Run Code Online (Sandbox Code Playgroud)

sprite-kit skspritenode sknode swift

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

AND(&&)运算符在SWIFT中未按预期工作

我试图在屏幕上随机生成节点而不重叠,所以我决定找到每个节点彼此的距离/距离,并连续随机生成一个位置,其中每个节点的范围大于100,一旦范围超过100它将突破while循环并将节点添加到视图中

    var p2Dp1: CGFloat = 0
    var p3Dp1: CGFloat = 0
    var p3Dp2: CGFloat = 0

    planet1.position = CGPoint(x: Int(arc4random_uniform(220) + 80), y: Int(arc4random_uniform(500) + 100))

    while p2Dp1 < 100.0 {

        planet2.position = CGPoint(x: Int(arc4random_uniform(220) + 80), y: Int(arc4random_uniform(500) + 100))
        p2Dp1 = SDistanceBetweenPoints(planet2.position, p2: planet1.position)
        print(" planet 2 distance from 1: \(p2Dp1) ")

    }

    while p3Dp1 < 100.0 && p3Dp2 < 100.0 {

        planet3.position = CGPoint(x: Int(arc4random_uniform(220) + 80), y: Int(arc4random_uniform(500) + 100))
        p3Dp1 = SDistanceBetweenPoints(planet3.position, p2: planet1.position)
        print(" …
Run Code Online (Sandbox Code Playgroud)

random distance range skspritenode swift

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

从数组中多次使用SKSpriteNode

我正在处理的应用程序有多个节点,这些节点会重复添加到游戏中.我一直在做的是使用纹理数组创建新的SKSpriteNodes,一旦添加了节点,我就为该节点分配一个特定的物理体.但我想要做的不是拥有一个纹理数组,而是拥有一个预先分配了物理主体的SKSpriteNodes数组.

我相信我已经弄清楚如何做到这一点,我遇到的问题是当我尝试将SKSpriteNode多次添加到场景时.

例如,下面是我一直在玩,有效,但如果我添加另一行addChild(arraySegment_Type1 [0]为SKSpriteNode),我收到一个错误,应用程序崩溃.

override func didMoveToView(view: SKView) {

    anchorPoint = CGPointMake(0.5, 0.5)

    var arraySegment_Type1:[SKSpriteNode] = []
    var sprite = SKSpriteNode(imageNamed: "myimage")

    sprite.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(sprite.size.width, sprite.size.height))
    sprite.physicsBody?.dynamic = false
    sprite.name = "mysprite"

    arraySegment_Type1.append(sprite)

    addChild(arraySegment_Type1[0] as SKSpriteNode)

}
Run Code Online (Sandbox Code Playgroud)

有谁知道我怎么能从阵列多次加载SKSpriteNodes?

arrays sprite-kit skphysicsbody skspritenode swift

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

如何从内存中清除SKSpriteNodes?

我通过调用一个创建SKSpriteNode子类实例的函数,从gameScene和其他对象中创建了一堆sprite.

例如,从GameScene,像这样:

let sizee = CGSize(width: 100, height: 100)
let posi = CGPoint(x: 200, y: 300)

func createSprite(){
    let new = Circle(color: SKColor.blue, size: sizee , position: posi)
    addChild(new)
    new.zPosition = 2
}
Run Code Online (Sandbox Code Playgroud)

在Circle中,我在完成一些动画后删除每个实例:

import SpriteKit

class Circle: SKSpriteNode {

    let fade = SKAction.fadeAlpha(to: 0.5, duration: 2)
    let myScale = SKAction.scaleX(to: 3, duration: 2)
    let die = SKAction.removeFromParent()

    override init(texture: SKTexture?, color: UIColor, size: CGSize) {
        super.init(texture: texture, color: color, size: size)
    }
    convenience init(color: UIColor, size: CGSize, position: CGPoint) …
Run Code Online (Sandbox Code Playgroud)

memory sprite-kit skspritenode swift

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

如何改变spriteNode的alpha值?

我正在改变这样的alpha价值,spriteNode

if (firstBody.node?.name)! == "Player" && secondBody.node?.name == "Alpha 1" {

        var item: SKSpriteNode?
        item = SKSpriteNode(imageNamed: "BG")
        item!.alpha = 0.1

        score += 1
        scoreLabel?.text = String(score)
}
Run Code Online (Sandbox Code Playgroud)

文档(使用node.alpha = value)中提到了这一点,但我不确定为什么它不起作用。

sprite-kit skspritenode skscene swift

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

快速单击 SKSprite 节点

我真的对此感到非常沮丧,我一直在努力让它工作近两天:(

如何快速向 SKSpriteNode 添加点击事件

  let InstantReplay:SKSpriteNode = SKSpriteNode(imageNamed: "InstantReplay")
  InstantReplay.position = CGPoint(x: size.width + InstantReplay.size.width/2, y: size.height/2)
  InstantReplay.size = CGSize(width: size.width/1.4, height: size.height/8)
  addChild(InstantReplay)

  InstantReplay.runAction(SKAction.moveToX(size.width/2, duration: NSTimeInterval(1)))
Run Code Online (Sandbox Code Playgroud)

我想要发生的只是当点击“InstantReplay”来运行一个名为“InstantReplay_Clicked”的函数时,我将如何实现这个?

非常感谢任何帮助:)

button ios sprite-kit skspritenode swift

0
推荐指数
1
解决办法
2141
查看次数

Sprite-kit游戏性能

我正在制作一个Sprite套件游戏.我有一个按钮,必须隐藏,而某些情况不会是真的.所以我将这个按钮添加到场景中并将其隐藏起来.那么哪种方式更好?要制作一个按钮,将其添加到场景并隐藏它?或者在需要时将它添加到场景中?

performance sprite-kit skspritenode

0
推荐指数
1
解决办法
96
查看次数

子类化返回instancetype的方法

我有一个自定义类,它是一个子类SKSpriteNode.我试图覆盖spriteNodeWithColor:size:返回的方法instancetype.我试试这个:

 -(instancetype)initWithColor:(UIColor *)color size:(CGSize)size{
     self.color = color;
     self.size = size;

     //do other setup stuff here
     return self;
}
Run Code Online (Sandbox Code Playgroud)

它每次都会崩溃.在此先感谢您的帮助

inheritance objective-c instancetype sprite-kit skspritenode

-1
推荐指数
1
解决办法
509
查看次数