我的世界有三个节点,玩家和“玩家视野”。世界和视觉 SKShapeNodes 和我的玩家都使用 SKShapeNode 的自定义子类。当我移动世界时,所有玩家都会随之移动,但是当我移动玩家时,视觉节点保持固定在其位置。这可能是什么原因?
这是我的玩家类别:
class Character : SKShapeNode {
var vision : SKShapeNode
var spinning = false
init(size: CGSize) {
vision = SKShapeNode()
// Player Shape
super.init()
self.path = SKShapeNode(rectOfSize: size).path
self.fillColor = SKColor.blackColor()
self.strokeColor = SKColor.blackColor()
self.name = "Player"
// Player Physics Body
self.physicsBody = SKPhysicsBody(rectangleOfSize: self.frame.size)
self.physicsBody.restitution = 0
self.physicsBody.allowsRotation = false
self.physicsBody.categoryBitMask = ColliderType.Player.toRaw()
self.physicsBody.collisionBitMask = ColliderType.Wall.toRaw()
self.physicsBody.contactTestBitMask = ColliderType.Wall.toRaw() | ColliderType.Player.toRaw() | ColliderType.Enemy.toRaw()
// Vision Shape
vision = SKShapeNode(rectOfSize: CGSize(width: 200, height: 1))
vision.fillColor = SKColor.greenColor()
// Vision Physics body
vision.physicsBody = SKPhysicsBody(rectangleOfSize: vision.frame.size)
vision.physicsBody.affectedByGravity = false
vision.physicsBody.categoryBitMask = ColliderType.Vision.toRaw()
vision.physicsBody.collisionBitMask = 0
vision.physicsBody.contactTestBitMask = ColliderType.Wall.toRaw()
self.addChild(vision)
}
}
问题是您的视觉节点由于其自己的物理主体而受到与其父级不同的物理引擎的影响。解决方案是设置视觉节点的position
财产给CGPoint(0, 0)
(或者您希望它位于其父坐标系中的任何内容)didSimulatePhysics
框架的步骤。这将导致将视觉节点重置为始终“跟随”父节点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)