SKSpriteNode 没有落入根场景

Posted

技术标签:

【中文标题】SKSpriteNode 没有落入根场景【英文标题】:SKSpriteNode are not falling in root scene 【发布时间】:2018-05-08 07:48:18 【问题描述】:

我添加了几个具有重复时间间隔的节点,但它们都没有自然下降。我也添加了

item!.physicsBody?.isDynamic = true

item!.physicsBody?.affectedByGravity = true

我正在打电话

self.scene?.addChild(itemController.spawnItem()) 来自游戏场景

func spawnItem()-> SKSpriteNode
        let item : SKSpriteNode?;
        if Int(randomBetweenNumbers(firstnum: 0, secondnum: 10)) >= 6
            item = SKSpriteNode(imageNamed: "Bomb");
            item!.name = "Bomb";
            item!.setScale(0.6);
            item!.physicsBody = SKPhysicsBody(circleOfRadius: item!.size.height / 2);
        
        else
            let num = Int(randomBetweenNumbers(firstnum: 1, secondnum: 6));
            item = SKSpriteNode(imageNamed: "Fruit\(num)");
            item!.name = "Fruit";
            item!.setScale(0.7);
            item!.physicsBody = SKPhysicsBody(circleOfRadius: item!.size.height / 2);
        
        
        
        item!.physicsBody?.categoryBitMask = ColliderType.FRUIT_AND_BOMB
       
        item!.zPosition = 3;
        item!.physicsBody?.isDynamic = true
        item!.physicsBody?.affectedByGravity = true
        item!.physicsBody?.isResting = false
        item!.anchorPoint = CGPoint(x: 0.5, y: 0.5)
        item!.position.x = randomBetweenNumbers(firstnum: minX, secondnum: maxX)
        item!.position.y = 400
        return item!;
    

【问题讨论】:

你能解释一下“不自然坠落”是什么意思吗? 我的猜测是,你没有在 GameScene 中正确设置物理。 只是看一下代码,您忘记了应该使它工作的一行。在您的 viewDidLoad 方法中添加 physicsWorld.contactDelegate = self 我通过将场景的重力属性设置为 -0.8 解决了这个问题,它对我有用 【参考方案1】:

我的场景的重力属性 y 参数设置为 0。所以所有正在添加的节点都不会落到底层,所以改为 -0.8 它对我有用

【讨论】:

不要设置,默认是地球重力

以上是关于SKSpriteNode 没有落入根场景的主要内容,如果未能解决你的问题,请参考以下文章

如何获取场景中不可见的 SKSpriteNode 的节点数?

使用场景编辑器获取 SKSpriteNode 的 userData

SpriteKit:向场景中添加多个 SKSpriteNode

Xcode7场景编辑器SKSpriteNode自定义类

SKSpriteNode 从场景中移除后如何停止音频(Swift)?

是否可以将 SKSpriteNode 添加到另一个类的场景中?