我正在尝试创建一个在创建后随机向前移动的球。我已经尝试从0-360创建一个随机角度并让节点旋转然后将一个脉冲应用于节点,但是节点一旦创建就停留在那里,所以我不知道它是否只是冲动无法正常工作或旋转不起作用。
enemy.size = CGSize(width: 20, height:20)
enemy.position = CGPoint(x: frame.width/2, y: frame.height/2)
enemy.color = UIColor(red:255.0,green:0.0,blue:0.0,alpha:1.0)
enemy.colorBlendFactor = 1.0
enemy.physicsBody?.affectedByGravity = false
enemy.physicsBody?.isDynamic = true
enemy.physicsBody?.restitution = 1.0
enemy.physicsBody?.friction = 0.0
enemy.physicsBody?.linearDamping = 0.0
self.addChild(enemy)
这只是为了制造敌人,但我不知道如何应用随机方向和向前运动。
enemy.size = CGSize(width: 20, height:20)
enemy.position = CGPoint(x: frame.width/2, y: frame.height/2)
enemy.color = UIColor(red:255.0,green:0.0,blue:0.0,alpha:1.0)
enemy.colorBlendFactor = 1.0
enemy.physicsBody = SKPhysicsBody(circleOfRadius:10)
enemy.physicsBody?.affectedByGravity = false
enemy.physicsBody?.isDynamic = true
enemy.physicsBody?.restitution = 1.0
enemy.physicsBody?.friction = 0.0
enemy.physicsBody?.linearDamping = 0.0
self.addChild(enemy)
let vec = CGVector(dx: CGFloat(arc4random_uniform(100)) / 50.0, dy: CGFloat(arc4random_uniform(100)) / 50.0)
enemy.physicsBody!.applyForce(vec)
这是我编辑过的代码。敌人的球现在在被另一个球击中时移动,但我希望敌人的球能够自动移动。现在它停留在屏幕中间的位置,直到被击中。
答案 0 :(得分:0)
就像Gary在评论中已经指出的那样,你想确保你已经为你的physicsBody
创建了一个SKNode
。如果还没有,可以找到一些简洁的文档here。
现在申请随机武力。您基本上想要生成随机CGVector
并在物理机构上使用applyForce。
生成随机向量:
let vec = CGVector(dx: CGFloat(arc4random_uniform(100)) / 50.0, dy: CGFloat(arc4random_uniform(100)) / 50.0)
arc4random_uniform
创建一个介于0和上限之间的随机数,该值作为参数传递。然后我将它分开一点以获得0到2之间的数字。你应该根据需要进行调整。
然后只使用enemy.physicsBody!.applyForce(vec)
。请注意我使用!
标记。确保你已经创建并应用了一个物理体,否则会崩溃。