[英]Problems with width properties in Swift
我在Swift中開發的橫向游戲存在問題。 它是從縱向模式教程和代碼改編而成的,但是我已經在項目設置中設置了正確的方向,並在GamePlayScene.sks文件中設置了尺寸(並在構建之前進行保存)
如果在主didMoveToView函數(例如背景)中添加精靈,則width屬性將按預期工作:
let background : SKSpriteNode = SKSpriteNode(imageNamed:"background")
background.position = CGPoint(x: self.frame.minX, y: self.frame.minY)
background.anchorPoint = CGPoint(x: 0, y: 0)
background.size.width = self.frame.size.width
但是,當我嘗試為地面添加物理對象(從我的GroundNode.swift類調用)時,通過使用類似的設置,我只能使地面伸展一半的屏幕。 好像節點突然認為屏幕處於縱向。
我將這段代碼放在主函數中的上面代碼之后:
var ground = GroundNode(size: CGSizeMake(self.frame.size.width, 100))
ground.zPosition = 20
self.addChild(ground)
這是我的地面節點類的縮寫版本:
import Foundation
import SpriteKit
class GroundNode: SKSpriteNode {
init(size: CGSize) {
super.init(texture: nil, color: UIColor.blackColor(), size: size)
self.name = "Ground"
setUpPhysicsBody()
}
func setUpPhysicsBody(){
self.physicsBody = SKPhysicsBody(rectangleOfSize: size)
self.position = CGPoint(x: 0, y: 0)
self.physicsBody?.affectedByGravity = false
self.physicsBody?.dynamic = false
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
這是我運行項目時的結果:
如您所見,背景完全按照預期的方式布置,但接地節點僅覆蓋屏幕的一半。 它也沒有與要在其上站立的任何對象正確地交互。它們漂浮在上面很多,是的,當我移開地面時,它們會正確掉落,盡管這可能是因為其節點類也遭受了同樣的問題。
有什么想法嗎?
我猜想0,0實際上是屏幕截圖的底部和中間位置,因為地面節點將其位置設置為0,0並從此開始。
您正在設置背景節點的位置,而不是地面節點的位置,請嘗試以相同的方式設置地面節點的位置。
ground.position = CGPoint(x: self.frame.minX, y: self.frame.minY)
感謝Stee,他讓我考慮了節點上0,0的位置,我意識到我沒有設置錨點,並且它默認為我的地面節點的中心。
通過添加以下內容:
self.anchorPoint = CGPoint(x: 0, y: 0)
我的代碼按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.