簡體   English   中英

Swift中的寬度屬性問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM