テクスチャアトラスを用いたキャラクターアニメの追加とphysicsBody

キャラクターほんまる

テクスチャアトラスを用いてiPhoneゲームアプリにアニメーションを追加する記事を 幾つか配信して来ましたが参考サイトに素材迄頼る飽く迄試験的な試行でした。

オリジナルゲームを開発するのですからオリジナルのキャラクターを用いるのは必定、 耳で羽搏き空を飛べる うさ犬 なる種族に属する ほんまる と称す右上に表示されるキャラクターを追加すべく試行するのですが ゲームとしては此のキャラクターが地面と接触すると減点となる仕様を基本とします。 従ってほんまるには勿論地面の側にも一定の仕掛けが必要となってきます。

スポンサーリンク
日付:2014年4月5日
開発機:MacBook Air(11-inch, Mid 2013)
MacOSバージョン:OS X 10.9.2
Xcodeバージョン:5.1
言語:Objective-C
主関連アプリ:うさ犬が行く

ゲーム開発に於いては画面上にキャラクターを合成表示するのに スプライト は実行環境の極めて非力な頃から採用されてきた技術です。 アップル社が純正に提供する2Dゲームフレームワークの SpriteKit 命名の由来でもあるのでしょう。 キャラクターならぬ横スクロールアクションの土台ともなり背景の一部にも思える 地面は此のスプライトを使って実装します。 即ち繰り返しを許容する画像 ground.png を用意しXcode内に SKSpriteNode として以下の如く実装します。

SKSpriteNode *ground1 = [SKSpriteNode spriteNodeWithImageNamed:@"ground"];

斯くして無限スクロールアニメーションスプライトとして実装された地面スプライトは 本ブログ2016年6月22日の記事 SpriteKitで地面を無限スクロールする で実装した如くキャラクターが右へ右への連続飛行の把握を プレイヤーに促す機能を果たします。

[ground1 runAction:[SKAction repeatActionForever:
    [SKAction sequence:
      @[
        [SKAction moveToX:-self.size.width/2 duration:3.0],
        [SKAction moveToX:0.0 duration:0.0]
        ]
    ]
  ]
];

ほんまるが飛行を続ける限り地面は繰り返し生成され 右から左へと流れ続ける目論見ですが いざほんまるが力尽きて地面に落下した際には両者は衝突せねばならぬ道理です。 此処で役立つのがSpriteKitの衝突判定機能です。

フレームワークSpriteKitは物理エンジンを搭載しており 各オブジェクトを剛体として設定、物理法則に従う挙動を与え得ますが 其の機能の一部として剛体と剛体の衝突判定が用意されています。 即ちほんまるにも地面にもSpriteKit内の物理世界で剛体としての設定を与え 両者の関係をゲームに反映させれば目論見は達成されるのです。

インスタンスに物理剛体設定するに physicsBody 性質を与えれば其々に特徴的なプロパティを有すことになります。 例えば上で生成したground1インスタンスに物理剛体としての仕様を以下列挙の如く与え得るのでした。

  • 重力の影響を受けない
    ground1.physicsBody.affectedByGravity = NO;
    重力の影響を受けて地面がボロボロ崩れ落ちるのは望む処じゃありません。
  • 衝突判定を受ける
    ground1.physicsBody.contactTestBitMask = 1;
    主人公キャラクターほんまるとの衝突を検知したくあります。
  • (衝突の影響で無限スクロール以外の方向に)動かない
    ground1.physicsBody.dynamic = NO;
    衝突の際に地面が動いちゃ洒落になりません。

キャラクターほんまるにも同様に物理剛体設定を与え 斯くて地面との衝突を検知する準備が整う次第。

Going USAINU(邦題: うさ犬が行く)
無料:カテゴリ: ゲーム: 4+ 評価
バージョン: 3.21
リリース: 2015年9月14日
更新: 2022年3月7日
サイズ : 19.7 MB
互換性: iOS 14.4 以降のiPhone、iPod touch に対応。および、macOS 11.0以降とApple M1 チップを搭載したMac に対応。