[Swift] 붉은 적을 무작위 위치에서 내려온다.(SpriteKit)
arc4random_uniform()
근처 지정은 좀 복잡하지만 이 근처가 좀 더 간단할 수 있을까...GameScene.swift
import SpriteKit
class GameScene: SKScene {
var last:CFTimeInterval!
var width: Int!
override func didMoveToView(view: SKView) {
self.physicsWorld.gravity = CGVectorMake(0, 0)
// 画面の幅をIntでとっている。
self.width = Int(self.view.bounds.size.width)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {}
// ここで赤い敵を発生させるメソッドを用意する。(ま、ただの赤い四角ですけど。)
func createEnemy(x: UInt) {
let enemy = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(60, 40))
enemy.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(60, 40))
enemy.physicsBody.affectedByGravity = false
enemy.physicsBody.linearDamping = false
enemy.physicsBody.velocity = CGVectorMake(0, -100)
enemy.position = CGPoint(
x: CGFloat(x),
y: CGRectGetMaxY(self.frame)
)
self.addChild(enemy)
}
override func update(currentTime: CFTimeInterval) {
if !last {
last = currentTime
}
// ここで一秒ごとに赤い敵をランダムな位置から発生させる。
if last + 1 <= currentTime {
// 敵が生成されるx軸の位置をきめる。
// センターから、「0<=乱数<=幅」なる乱数を足して、幅の半分を引く。
var xEnemyPos: UInt! = UInt(CGRectGetMidX(self.frame))
+ UInt(arc4random_uniform(UInt32(self.width)))
- UInt(self.width / 2)
self.createEnemy(xEnemyPos)
last = currentTime
}
}
}
Reference
이 문제에 관하여([Swift] 붉은 적을 무작위 위치에서 내려온다.(SpriteKit)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mochizukikotaro/items/450d973245a2c6edb0d4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)