【问题标题】:Remove physics body移除物理体
【发布时间】:2016-11-23 08:46:42
【问题描述】:

有没有办法在 swift 3 中移除物理体?

我发现的只是myNode.phyisicsBody = nil,但它在 swift 3 中不起作用

“Nil 不能分配给类型 SKPhysicsBode”

事实上,默认情况下,我的scene.sks 有一个子场景,它有一个physicsBody,中间有一个小点,我要删除的就是这个

【问题讨论】:

  • 你试过removeFromParent函数了吗?
  • 没有这个。我只有“删除”是removeObserver
  • 刚刚在操场上尝试了这条线myNode.physicsBody = nil ,它运行良好。也许您可以向我们展示更多代码。你是如何创建节点和physicsBody的?另外,请注意错字 physics
  • 删除!!
  • 啊,不错...有时您看不到眼前的东西...

标签: swift sprite-kit swift3


【解决方案1】:

刚刚在操场上试过下面的代码,可以myNode.physicsBody = nil

import UIKit
import SpriteKit

let spriteNode = SKSpriteNode(imageNamed: "elephant")

spriteNode.physicsBody = SKPhysicsBody(texture: spriteNode.texture!,
                                       size: spriteNode.texture!.size())
spriteNode.physicsBody = nil // No Error

来自Apple API about physicsBody

默认值为nil,表示节点完全不参与物理模拟。如果提供了物理体,则在模拟场景的物理时,物理体会更新节点的位置并旋转节点。

我想说,检查您最初创建 physicsBody 的位置,并确保它是可选的。

编辑

SceneObject!.physicsBody! = nil 

这行不通!通过使用!,您告诉编译器它不是nil

改成

SceneObject!.physicsBody = nil 

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多