読者です 読者をやめる 読者になる 読者になる

"まだ"の力 [Swift]基礎辞書

学んだことを書いていきます。質問やエラーなどございましたらお気軽にコメントお願いします。

ゲームのキャラクターを作成!「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) {}