見出し画像

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)
   }

タップした時に物理特性を与えてやります。これで起動後タップすると落下してコロッとします。

この記事が気に入ったらサポートをしてみませんか?