gpt4 book ai didi

swift - 我如何在 SpriteKit 中从顶部编码现在从侧面出现的产卵球?

转载 作者:搜寻专家 更新时间:2023-11-01 06:17:43 34 4
gpt4 key购买 nike

我正在使用 SpriteKit 为 iPhone 开发一个简单的游戏,并试图从屏幕顶部生成球。然而,球不断从侧面产生,我不知道如何让它们从顶部出现……有人知道如何改变这个吗? (见代码)。这也是随机生成的好方法吗?或者我应该生成它们并让它们按照重力规则下落吗?

//ENEMIES

func random() -> CGFloat {
return CGFloat(Float(arc4random()) / 0xFFFFFFFF)
}

func random(min: CGFloat, max: CGFloat) -> CGFloat {
return random() * (max - min) + min
}

// 1
func spawnEnemy() {
// 2
let enemy = SKSpriteNode(imageNamed: "ball")
// 3
enemy.name = "enemy"
// 4
enemy.position = CGPoint(x: frame.size.width + enemy.size.width/2,
y: frame.size.height * random(min: 0, max: 1))
// 5
addChild(enemy)

enemy.run(
SKAction.moveBy(x: -size.width - enemy.size.width, y: 0.0,
duration: TimeInterval(random(min: 1, max: 2))))

}

最佳答案

请记住,位置 (0,0) 是屏幕的左下角,x 值从左到右在屏幕上递增,y 值在屏幕上从下到上递增。

你的重生点总是

(x: frame.size.width + enemy.size.width/2, y: frame.size.height * random(min: 0, max: 1)

位于屏幕右侧,具有随机 y 值(即随机高度)。您的 x 值需要是随机的,您的 y 值需要是:

(x: frame.size.width * random(min: 0, max: 1), y: frame.size.height + enemy.size.height/2)

然后,正如 Dreamer 所说,您的移动 SKAction 需要将敌人从其当前 y 值移动到 0,同时保持其 x 值不变(假设您希望它沿屏幕直线向下移动。

关于你关于产卵和重力的问题——你想让你的物体以恒定的速度向下移动(这是你修正后的 SKAction 会做的)还是看起来好像它们在重力作用下下落,在这种情况下它们' d 出现,然后开始缓慢移动但不断加速。

编辑:正如 KnightOfDragons 所说 - (0, 0) 坐标的实际位置由称为 anchorPoint 的属性控制(它本身是一个 CGPoint,但这不是与实际坐标有关)。它以前总是 (0, 0),这意味着左下角,但现在它可能是 (0.5, 0.5),这意味着屏幕的中心,即放置在 (0,0) 的 Sprite 将是在屏幕中间。增加 x 或 y 将分别向右或向上移动 Sprite ,减少 x 或 y 将分别向左或向下移动 Sprite 。

这意味着如果您的场景的 anchor 为 (0.5, 0.5),则屏幕边缘的坐标为:

  • 屏幕顶部 - y: frame.size.height/2
  • 屏幕底部 - y: -frame.size.height/2
  • 屏幕右边缘 - x: frame.size.width/2
  • 屏幕左边缘 - x: -frame.size.height/2

anchorPont 是 (0, 0) 还是 (0.5, 0.5) 可能取决于您的场景是来自 .sks 文件还是通过代码。

关于swift - 我如何在 SpriteKit 中从顶部编码现在从侧面出现的产卵球?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40737672/

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