【问题标题】:Problems with width properties in SwiftSwift 中的宽度属性问题
【发布时间】:2015-02-10 12:25:59
【问题描述】:

我在使用 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")
}
}

这是我运行项目时的结果:

如您所见,背景完全符合预期,但地面节点仅覆盖屏幕的一半。它也没有与任何应该站在上面的物体正确交互。它们漂浮在上方,是的,当我移开地面时,它们正确地落下,尽管这可能是因为它们的节点类也受到同样的问题。

请给点意见?

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    我猜 0,0 实际上位于屏幕截图的底部和中间,因为您的地面节点将其位置设置为 0,0,这就是它的开始位置。

    您设置的是背景节点的位置,而不是地面节点的位置,请尝试以相同的方式设置地面节点的位置。

    ground.position = CGPoint(x: self.frame.minX, y: self.frame.minY)  
    

    【讨论】:

    • 地面节点实际上是左边的黑色矩形。它通常设置为 clearColor() 。实际的地面,即草地,目前是 BG 图像的一部分。不过谢谢。
    【解决方案2】:

    感谢 Stee 让我想到节点上 0,0 的位置,我意识到我没有设置锚点,并且它默认为我的地面节点的中心。

    通过添加以下内容:

    self.anchorPoint = CGPoint(x: 0, y: 0)
    

    我的代码按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多