駒の移動はCore Animation

駒の移動はCore Animation

GameBoardTileからその座標位置を得て、その座標にGameObjectViewを移動させる。駒を動かす処理はCore Animationで行っている。Core AnimationとはMac OS XやiOSで導入されている、UIにアニメーションを付加するための技術だ。Core Animationを利用することで簡単にビューの属性(位置やサイズ、透明度など)をアニメーションさせることができる。

以下がGameObjectViewに実装している位置移動のためのメソッドだ。駒を移動させるために CABasicAnimationというクラスを使っている。UIViewはCALayerクラスのlayerというプロパティーを持っており、このlayerの持つプロパティーに対してアニメーションをさせることができる。ここではそのビューの位置を示す position というプロパティーの設定を変更してアニメーション移動をさせている。

<GameObjectView での実装>

最初にアニメーションのためのオブジェクトを作成する、ここでは animationWithKeyPath: により、positionを指定している。

Core Animationではアニメーションの時間を秒単位で指定するのだが、それでは移動距離によって速度が違ってしまう、そのために速度(speed)をプロパティーとして持ち、移動の始点と終点から距離を割り出して速度と距離から一定になるように移動時間を求めている。

そしてその移動時間と移動元と移動先の位置をアニメーションのオブジェクトに設定し、それをUIViewが持つlayerに設定してやる。こうすることでアニメーションが開始される。

ただしこれだけでは実際にビューは移動してくれない、アニメーションが終わった後は元の位置に表示されてしまう、そのため最後に実際の位置を動かすようにレイヤーのframeを変更する。

そしてこの部分、アニメーションクラスのデリゲートに自分自身(GameObjectView)を設定している。

これにより以下のデリゲートメソッドを実装しておくことでアニメーションの終了時に通知を受けることができる。

gamePieceCAMoveEnd:Position:Finish: は自分自身(GameObjectView)が定義しているデリゲートメソッドだ、このメソッドで自分のデリゲートオブジェクト(GameController)に移動の終了を通知する。これが駒を移動させるための仕組みの基本だ。

今回のサンプル一式は、会員限定特典としてダウンロードできる。記事末尾をご確認いただきたい。

図2:駒移動のイベント伝達(クリックで拡大)

次回はこれをどのように使って「Rabbit Maze」でキャラクターを制御しているのかを解説する予定だ。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30