スプライトの表示
本章からは、Sprite Kitに搭載されているゲーム開発のための様々な機能を、もう少し詳しく見ていきます。
まずはスプライト ( SKSpriteNode ) です。
スプライトはテクスチャ画像を画面に表示するためのクラスで、例えば、キャラクタや障害物を表現するために用いることができます。
また、実際のゲームではあまり利用しないかもしれませんが、色を指定して矩形を表示することもできます。
それでは、以下の画像と矩形を表示してみましょう。
sword.png
まずは、前章の手順で、SJSprite
プロジェクトを作成します。
そして、SJSpriteScene
を作成し、SKViewに表示させます。
SJViewController.m
SJSpriteSceneのインスタンスを作成して表示します。
SJSpriteScene.h
シーンのヘッダファイルは、Sprite Kitをインポートしている以外、特別なところはありません。
SJSpriteScene.m
シーンが表示された時に呼ばれるdidMoveToView:
メソッド内で、初期化をしています。
ただし、このメソッドは画面表示の度に呼ばれるため、_contentCreated
フラグによって、一度だけ初期化するようにしています。
この時点で実行すると、もうお馴染みになったFPS等の情報のみの画面が表示されます。
SJSpriteScene
これで準備は整いました。
createSceneContents
の中に、スプライトを表示するコードを書いてみましょう。
sword.png
をプロジェクトに追加するのを忘れないでください。
実行すると、画面の中央に剣が、その少し下にグレーの矩形が表示されています。
剣と矩形を表示
なお、Sprite Kitの座標系は左下が原点となります。(iOS・Mac共に)
色付け
SKSpriteNodeでは、画像をそのまま表示するだけでなく、色に変化を加えることができます。
以下のコードは赤色を0.2〜1.0の強さでブレンドしています。
例えば、ステータス異常や属性等を表現するのに便利に使える機能でしょう。
なお、SKColorは、プラットフォームに応じた色を返してくれるマクロです。(iOSではUIColor、MacだとNSColor)
剣に赤色をブレンド
サイズ変更
xScale・yScaleの値を変更すれば、リサイズも簡単にできます。
以下は2倍に拡大する例です。
剣を拡大
基準点と回転
スプライトはAnchor Pointを基準にして表示されます。
デフォルトでは( 0.5, 0.5 )
、つまり中心に設定されており、座標の指定や回転はその点を軸にして行われます。
以下は同じように座標指定、回転をした例ですが、anchorPoint
が一方は中央、もう一方は右下と異なっているため、背景のボックスとの重なり方が異なっています。
なお、zPositionは大きいほど手前に表示されます。
基準点を変更して移動・回転
このようにSKSpriteNodeを使うと、テクスチャ画像を様々な効果と共に、簡単に表示することができます。
comments powered by