【发布时间】:2016-12-19 18:18:57
【问题描述】:
我想以更有序和更清晰的方式设置我的 SpriteKit 游戏,因此我决定为每种类型的精灵节点使用类。
在我的例子中,我在 swift 中创建了一个单独的 Player 类,看起来像这样
import SpriteKit
class Player: SKSpriteNode {
func initializePlayer() {
self.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: self.size.width, height: self.size.height))
self.physicsBody?.affectedByGravity = true
}
func moveLeft () {
print("left")
}
func moveRight () {
print("right")
}
}
我在场景编辑器的自定义类检查器中正确引用了这个 Sprite 节点,我可以毫无问题地触发类方法 - 所以效果很好。
我像这样在我的 GameScene 中引用 Player 类:
class GameplayScene: SKScene {
var player: Player = Player()
let myNode = SKSpriteNode(imageNamed: "player")
override func didMove(to view: SKView) {
player.initializePlayer()
}
}
但是没有应用物理体,我不知道为什么会这样。
在我将物理体添加到精灵节点后,我希望节点会从屏幕上掉下来。但这不会发生,我不知道为什么。
有人知道如何在课堂上应用物理体吗?
【问题讨论】:
-
你说的物理体没有应用是什么意思?
-
在我将物理体添加到精灵节点后,我希望节点从屏幕上掉下来。但这不会发生,我不知道为什么。
-
我在发布的代码中看不到,您只是将物理体添加到 self.更具体并发布更多代码。
-
@Mina 感谢您的反馈,我更新了我的描述,希望我的问题现在更清楚一点
-
在调用
initializePlayer()之前是否设置了节点的大小?也许物理体的大小是 0x0 并引起了问题?
标签: sprite-kit swift3 skspritenode