在屏幕上的 3 个特定位置生成敌人 Swift SpriteKit IOS
Posted
技术标签:
【中文标题】在屏幕上的 3 个特定位置生成敌人 Swift SpriteKit IOS【英文标题】:spawn Enemies in 3 specific places on the screen Swift SpriteKit IOS 【发布时间】:2017-01-05 09:24:38 【问题描述】:我正在使用 SpriteKit 快速构建游戏,此时我的敌人在屏幕上随机生成,我希望我的敌人仅在 3 个位置生成,例如左上角、中上角和右上角。这三个地方之间的产卵也是随机的。我尝试了一些代码,但我是初学者,我需要你们的帮助,谢谢
//Generate the random Number
func random() -> CGFloat
return CGFloat(Float(arc4random()) / 0xFFFFFFFF)
func random(min min: CGFloat, max: CGFloat) -> CGFloat
return random() * (max - min) + min
这是生成敌人的代码
func spawnEnemy()
let randomXStart = random(min: CGRectGetMinX(gameArea), max: CGRectGetMaxX(gameArea))
let startPoint = CGPoint(x: randomXStart, y: self.size.height * 1.2)
【问题讨论】:
从 sks 文件加载时场景的锚点为 0.5, 0.5。表示默认情况下精灵将被添加到屏幕的中心。左上角是-sceneWidth/2,-sceneHeight/2。右上角是sceneWidth/2,sceneHeight/2。这两点之间的点为 0,sceneHeight/2。要随机化精灵的 x 位置,只需在 -sceneWidth/2 和 sceneWidth/2 之间生成随机值。 【参考方案1】:试试:
func spawnEnemy()
let randomXStart = random(min: 0, max: 2)
let startPoint = CGPoint(x: randomXStart * self.size.width/2, y: self.size.height * 1.2)
.
.
.
这会生成其他 0、1 或 2 的随机数。然后将精灵的 x 位置设置为屏幕宽度的一半 * 这个随机数将生成 0(左上角)的 x 位置,self. size.width/2(即屏幕的一半)或 self.size.width(即右上角)。
您可能需要根据精灵的anchorPoint
稍微调整这些,因此您还可以执行以下操作:
func spawnEnemy()
let randomXStart = random(min: 0, max: 2)
switch floor(randomXStart)
case 0 :
let startPoint = CGPoint(x: 0, y: self.size.height * 1.2) + (adjustment factor for top-left corner)
case 1 :
let startPoint = CGPoint(x: self.size.width/2, y: self.size.height * 1.2) + (adjustment factor for top-middle)
case 2 :
let startPoint = CGPoint(x: self.size.width, y: self.size.height * 1.2) + (adjustment factor for top-right corner)
default : break
.
.
.
【讨论】:
谢谢,但我还有一个问题,我使用了你的 func spawnEnemy() 但现在当我尝试放置enemy.position = randomXtart 时它不起作用:它说不能分配time() 的值输入 CGpoint,所以我的敌人位置无法访问 case 0,1,2 也无法使 startPoint = CGPoint(x: spawnEnemy, y:spawnEnemy) 我能做什么? @DanielArdeleanu 你能把这个新代码贴在你有enemy.position = randomXstart 并且收到关于time() 的消息的地方吗? 它与您提供的第一个功能一起使用:func spawnEnemy() let randomXStart = random(min: 0, max: 2) let startPoint = CGPoint(x: randomXStart * self.size.width/2, y: self.size.height * 1.2) let startPoint = CGPoint(x: randomXStart * self.size.width/2, y: self.size.height * 0.8)
对于带有 switch randomXtart 的第二个功能,它不起作用,因为我不知道如何访问它。所以我有一个位置:`enemy.position = startPoint 与第一个功能一起使用,在第二个功能(带开关的那个)我不能放置敌人。位置 = startPoint,它无法访问案例
感谢您的回答,它确实帮助我完成了我想做的事情,现在我已经学会了如何更好地使用随机函数。将来我相信我还会学习如何访问 switch 语句。
@DanielArdeleanu 第二个示例中出现错误(参数中的右括号)。此外,您的 random() 函数返回 CGFloats,因此您需要将结果转换为 Int 才能使 Switch 工作查看我的编辑。以上是关于在屏幕上的 3 个特定位置生成敌人 Swift SpriteKit IOS的主要内容,如果未能解决你的问题,请参考以下文章