我真的很想在操场上调试我的一些游戏物理,在那里可以更容易地看到发生了什么并运行一些测试代码。我把我的问题简化为一个小片段,你可以复制粘贴到一个操场上,看看你是否可以重现这个问题,也许可以提供一个解决方案:

import SpriteKit

import PlaygroundSupport

let sceneView = SKView(frame: CGRect(x: 0, y: 0, width: 480,
                                     height: 320))
let scene = SKScene(size: CGSize(width: 480, height: 320))
sceneView.showsFPS = true
sceneView.showsPhysics = true
sceneView.presentScene(scene)
PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = sceneView

let test = SKShapeNode(rectOf: CGSize(width:100,height:100))
test.fillColor = UIColor.red
test.position = CGPoint(x:scene.size.width/2, y: scene.size.height/2)
test.zPosition = 1

test.physicsBody? = SKPhysicsBody(circleOfRadius: 50)

scene.addChild(test)

你应该在操场输出的中心看到一个正方形。
问题是SKPhysicsBody创建一个圆形物理体的调用似乎返回nil。如果删除可选符号:
test.physicsBody = .....

调用失败,节点无法出现在场景中。
有人知道我在操场设置或代码中缺少什么来让我创建和查看物理体吗?理想情况下,我想添加几个我更复杂的角色,然后调整物理身体,关节等在操场上,我可以很容易地观察,然后再添加修改回游戏。

最佳答案

移除?发件人:

test.physicsBody? =

正在发生的事情是斯威夫特正在寻找是否存在CC,因为它是一个可选的“。”并发现它没有,所以不必为剩下的行(thetest.physicsBody)操心
你可以在操场上用以下代码验证:
var myOpt: Int?
myOpt? = 4
print((myOpt)   // Prints nil.
myOpt = 5
print(myOpt)    // Prints Otional(5)

提示-在处理选项时,当我看到一个'?'时,我会用一种质疑的语气给自己读代码当我看到一个'的时候,我的语气很有力,这有助于我记住这一点?意思是“这是存在的吗?”还有!意思是“做吧!”
编辑-刚看到你试过没有'?',但您说“调用失败,节点无法出现在场景中。”。
我刚在操场上试过你的代码,效果很好。在地心引力的作用下,正方形不断向下下落,在消失之前就出现了。:-)
添加:
= SKPhysicsBody(circleOfRadius: 50)在执行scene.physicsWorld.gravity = CGVector(dx:0, dy:0)之前

关于ios - 我似乎无法让物理机构在操场上工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49270039/

10-08 23:12