Swiftでいこう--ゲームをつくろ!5
ちょっとここでゲームでは大事になってくる物理的な動作について考えていきます。
今まで使ってきた画像を使って物理ボディを作って行きます。
まずは変数に画像を入れて、
var space = SKSpriteNode(imageNamed: "spaceship")
var erth = SKSpriteNode(imageNamed: "earth")
var ast = SKSpriteNode(imageNamed: "asteroid1")
それで、起動後にすぐに適用するので、
override func didMove(to view: SKView) {
// ここにコードを書いて動きをきめる
}
物理物性のコード、動きを書きます。
space.physicsBody = SKPhysicsBody(texture: space.texture!, size: space.size)
erth.physicsBody = SKPhysicsBody(texture: erth.texture!, size: erth.size)
場所も指定、大きさも指定してやります。
space.position = CGPoint(x: 0, y: -500)
erth.position = CGPoint(x: 0, y: -800)
ast.position = CGPoint(x: 100, y: 500)
ast.scale(to: CGSize(width: 70, height: 70))
.physicsBodyで"物"として反応させます。そして表示させます。
self.addChild(space)
self.addChild(erth)
このままだと起動後にすぐに物理特性が発生するため地球と、宇宙船は下に落ちて行きます。
それを止めるためには
erth.physicsBody?.isDynamic = false
として重力に対しては影響されない、無効にします。
そうすると、
となり固定されます。
あとは惑星をタップした時に落下させてみます。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
ast.physicsBody = SKPhysicsBody(texture: ast.texture!, size: ast.size)
}
タップした時に物理特性を与えてやります。これで起動後タップすると落下してコロッとします。