将节点设置为从点数组中随机生成并以逐渐更快的速度下降
Posted
技术标签:
【中文标题】将节点设置为从点数组中随机生成并以逐渐更快的速度下降【英文标题】:Setting node to spawn randomly from an array of points and to fall at gradually faster speeds 【发布时间】:2016-08-17 18:55:55 【问题描述】:我希望实现的结果:我希望从存储在数组中的 3 个不同位置随机生成一个节点。一旦产生,我希望节点掉落。随着时间的推移,我希望节点以更快的速度下降。
我目前拥有的:节点在设定的位置生成并按照应有的方式落下。该节点当前不会随机生成,并且它下落的速度不会增加。我写了一个数组,但它目前没有按应有的方式运行。
更新代码:
var nodeDropTime:TimeInterval = 5
func fallingNodeAction()
self.node = SKSpriteNode(imageNamed: "node 2")
self.node.zPosition = 1
self.node.physicsBody = SKPhysicsBody(circleOfRadius: self.node.size.height / 10.0)
self.node.physicsBody?.isDynamic = true
self.node.physicsBody?.allowsRotation = false
self.node.physicsBody?.affectedByGravity = true
nodeDropTime -= 1
var nodePosition = Array<CGPoint>()
nodePosition.append((CGPoint(x:400, y:475)))
nodePosition.append((CGPoint(x:450, y:475)))
nodePosition.append((CGPoint(x:500, y:475)))
self.node.physicsBody?.categoryBitMask = ColliderType.nodeCategory
self.node.physicsBody?.contactTestBitMask = ColliderType.boundary
self.node.physicsBody?.collisionBitMask = 0
let shuffledLocations = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: nodePosition) as! [CGPoint]
self.node.position = shuffledLocations[0]
fallingNodeAction()
【问题讨论】:
【参考方案1】:对于随机位置,导入
GameplayKit
,因此您可以在CGPoint
s 的数组上使用arrayByShufflingObjectsInArray
,然后选择数组中的第一项作为位置。代码:
let shuffledLocations = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: nodePosition) as! [CGPoint]
self.node.position = shuffledLocations[0]
【讨论】:
嗨@Nik,很抱歉回复晚了。我工作很忙。实现代码时,在您的答案中添加第二行代码时出现小错误。错误:无法将“Any”类型的值分配给“CGPoint” @P.Dane 尝试在 shuffledLocations 之后(在第一行)添加: CGPoint
并告诉我这样做是什么
错误消失了,但是编译的时候有个小问题说:Command failed due to signal: Segmentation fault: 11
添加 :CGPoint 消除了错误但导致代码无法编译
在对数组进行洗牌后尝试添加as! CGPoint
(第一行结束)以上是关于将节点设置为从点数组中随机生成并以逐渐更快的速度下降的主要内容,如果未能解决你的问题,请参考以下文章