gpt4 book ai didi

swift - 我的 SKTexture 的尺寸对于我的 SKSpriteNode 来说是错误的

转载 作者:行者123 更新时间:2023-11-30 10:28:34 24 4
gpt4 key购买 nike

我有一个 200 x 100 盒状菜单按钮 SKSpriteNode,在下面声明。

menuBtn.size = CGSize(width: scrWidth * 1.5, height: 100)
menuBtn.texture = SKTexture(image: UIImage(named: "menuBtn")!)

问题是,按钮的点击框仍然是正确的,并且 SKTexture 的宽度很好,但 SKTexture 的高度约为实际 menuBtn 大小的 1/2。它是一个 png,我检查过, Sprite 周围没有清晰的纹理(只有透明的 png 纹理),我做错了什么?

按钮图片:https://imgur.com/a/8BtXGLC

应用程序中的按钮图片:https://imgur.com/a/ZfW3xDL

我想要它的外观的图片:https://imgur.com/a/2zlSv8y

如果有影响的话,纹理的 png 图像大小为 1044x1044。

最佳答案

首先,确保您将正确的尺寸从 GameViewController 发送到场景,在此示例中为 GameScene

// without .sks

class GameViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()

// ...

if let view = self.view as! SKView?
{
let scene = GameScene()

// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFit

// Set anchorPoint and pass scene.size
scene.anchorPoint = CGPoint(x: 0.5, y: 0.5)
scene.size = view.bounds.size

// Present the scene
view.presentScene(scene)
}

// ...
}

// with .sks

class GameViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()

// ...

if let view = self.view as! SKView?
{
if let scene = SKScene(fileNamed: "GameScene.sks")
{
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFit

// Pass scene.size
scene.size = view.bounds.size

// Present the scene
view.presentScene(scene)
}
}

// ...
}

在您的GameScene中创建对象。我建议您在创建对象时使用 screenWidthscreenHeight,以便它们能够缩放到所有 iOS 设备。

class GameScene: SKScene 
{
override func didMove(to view: SKView)
{
// ...

// scene width / height
let sceneWidth = size.width
let sceneHeight = size.height

// object
let menu : SKSpriteNode = SKSpriteNode()
menu.texture = SKTexture(imageNamed: "menu")
menu.size = CGSize(width: sceneWidth * 0.75, height: 100)
let y_pos : CGFloat = -sceneHeight * 0.5 + menu.size.height * 0.5
menu.position = CGPoint(x: 0, y: y_pos)
menu.zPosition = 1
addChild(menu)

// ...
}
}

关于swift - 我的 SKTexture 的尺寸对于我的 SKSpriteNode 来说是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59649608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com