SKSpriteNode 从屏幕上掉下来

Posted

技术标签:

【中文标题】SKSpriteNode 从屏幕上掉下来【英文标题】:SKSpriteNode fall off the screen 【发布时间】:2018-07-16 16:52:28 【问题描述】:

有人能帮帮我吗,我创建了一个名为 (player) 的 SpriteKit 节点,一旦我设置了它的物理特性,它就会从屏幕上掉下来​:

let player = SKSpriteNode(imageNamed: "car")
player.position.x = -300
player.zPosition = 1
player.physicsBody = SKPhysicsBody(texture: player.texture!, size: player.size)
player.physicsBody.categoryBitMask = 1
addChild(player)

我已经尝试添加了

affectedByGravity 

但玩家和敌人的结果相同。

【问题讨论】:

【参考方案1】:

如果我知道了,您希望您的汽车不受重力影响。 如果是这样,您可能想要设置“世界”的物理特性,例如:

    func setWorld() 
        self.backgroundColor = UIColor.white

        //This should do the trick!
        physicsWorld.gravity = CGVector(dx:0, dy:0)

        //This is useful if you want to create wall along the borders    
        let frame = CGRect(x: self.frame.minX, y: self.frame.minY, width: self.frame.width, height: self.frame.height)
        //here you set the borders as walls
        physicsBody = SKPhysicsBody(edgeLoopFrom: frame)

        physicsBody?.friction = 0
        physicsBody?.restitution = 1
        physicsBody?.linearDamping = 0
    

并在 didMove 中调用此函数

【讨论】:

Noooooo 会关闭整个世界的重力,而不仅仅是汽车。只需在物理体上设置isAffectedByGravity = false

以上是关于SKSpriteNode 从屏幕上掉下来的主要内容,如果未能解决你的问题,请参考以下文章

确保节点可见

SKSpriteNode 从屏幕上消失后如何删除或销毁它

iOS SKSpriteNode - 离开屏幕

SKSpriteNode 的循环位置

如何在Swift中正确地从父节点中删除SKSpriteNode的子类(要从数组中移除,屏幕上的空格......)?

SKSpriteNode 未加载到屏幕上?