ゲームのキャラクターを作成!「SKSpriteNode」
ゲーム作成には必要なキャラクター設定や、背景の設定などはSpriteKitのSKSpriteNodeを使います。
以下主要なものの使い方を一覧で載せていきます。
プレイヤーのノードを設定(インスタンスを作成)
var playerSprite = SKSpriteNode(imageNamed: "画像名") //画像名例:"img.png"や"img.jpg"
position
プレイヤーの位置
例
playerSprite.position = CGPoint(x:75,y:75)
zPosition
奥から手前に向かってくるように描いたz座標を設定
プレイヤーと背景の表示順番を設定できる
例
playerSprite.zPosition = 5
size
プレイヤーノードのサイズ
例
playerSprite.size = CGSizeMake(120, 155)
physicsWorld
gravity
物理空間を生成
例
self.physicsWorld.gravity = CGVector(dx: 0.0, dy: -5.0)
contactDelegate
衝突判定を受け取るのはどれか。
self.physicsWorld.contactDelegate = self
physicsBody
プレイヤーが物理空間の影響を受けるボディを作る(物理ボディ)
例
playerSprite.physicsBody = SKPhysicsBody(rectangleOfSize: playerSprite.size) //playerSprite.size→プレイヤーのサイズが物理ボディ
allowsRotation
重力効果により回転するかどうか
例
playerSprite.physicsBody?.allowsRotation = true
velocity
プレイヤーが動くときの速度設定
例
playerSprite.physicsBody?.velocity = CGVector(dx: 100, dy: 0)
SKPhysicsContactDelegate
衝突判定を受け取るためのデリゲート
例
class GameScene: SKScene,SKPhysicsContactDelegate ←←←←
affectedByGravity
重力効果と衝突判定を受けるかどうか
playerSprite.physicsBody?.affectedByGravity = true
categoryBitMask
プレイヤーのカテゴリー設定。これにより衝突したときに実行するコードを書けます。
例
let category_player:UInt32 = 1 << 1 //0001 let category_tower:UInt32 = 1 << 2 //0010 let category_enemy:UInt32 = 1 << 3 //0100 let category_item:UInt32 = 1 << 4 //1000 4つのカテゴリを用意 //プレイヤーをプレイヤーカテゴリに設定 playerSprite.physicsBody?.categoryBitMask = category_player
contactTestBitMask
プレイヤーが衝突するもの
例
playerSprite.physicsBody?.contactTestBitMask = category_enemy | category_item //プレイヤーは敵とアイテムに衝突
didBeginContact
衝突が起きたときに呼び出される関数(SKPhysicsContactDelegateの実装が必要)
func didBeginContact(contact: SKPhysicsContact) {}