gpt4 book ai didi

iOS横向定位问题Swift SpriteKit

转载 作者:行者123 更新时间:2023-11-28 15:11:54 26 4
gpt4 key购买 nike

出于某种原因,我无法将节点放置在屏幕的顶部或底部。我曾经能够使用 self.frame.height/2 很好地做到这一点,但现在我在景观中工作,这行代码不起作用。注意:我的 anchor 是 0.5, 0.5,我的缩放模式是 .aspectFill感谢您的帮助。

最佳答案

这可能与场景的纵横比和使用 .aspectFill 有关。

当您使用 .aspectFill 时,SpriteKit 将调整场景大小以从边到边填充视口(viewport),包括水平和垂直方向,但不会拉伸(stretch)它。这意味着对于横向,您可能最终会“裁剪”场景的顶部和底部,除非您设计了一个特别浅的场景。

换句话说,您遇到的是信箱化的对立面。场景的宽度和高度是固定的,当设备尺寸与宽高比不同时,它会“溢出”一轴到屏幕外。在您的情况下,它可能会从顶部和底部溢出场景,以便左右填充您的场景。

有一些策略可以解决这个问题。

首先,您可以选择不同的 scaleMode。例如,.aspectFit 可能会将您的高度计算返回到您的预期,但它的代价是还包括左侧和右侧的信箱,这可能不是您想要的,但也许吧。

其次,您可以计算新的场景大小以匹配视口(viewport)的纵横比。这将为您提供您期望的两个方向的行为,但这也意味着您的场景的宽高比会根据播放它的设备而变化,这将需要您调整游戏玩法和场景布局以适应这种可变形状.这是很多工作,但它通常是最好的解决方案。 (一种解决方案是调整场景大小,然后让您的“真实场景”居中,但对于某些游戏类型而言,这可能会令人不满意且存在问题。)

第三,您可以使用 scaleMode 简单地将场景缩放到视口(viewport)。这将导致一些挤压/拉伸(stretch),具体取决于设备,因此它通常不是一个很好的选择,但根据您制作的游戏类型,这可能是一个选择。

关于iOS横向定位问题Swift SpriteKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47502805/

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