4章ステートマシンを用いたアニメーションの管理

前章では、最小限のゲーム「エンジン」を作った。このエンジンでは、メインキャラクターであるRHBを動き回らせ、簡単なアニメーションを表示することができたが、完全なゲームには程遠い。歩き回る世界もないし、アニメーションでは走ることしかできないし、RHBには何の物理現象も働かない。今の段階でゲームにタイトルを付け直すとしたら「RHBと虚無」とでもなるだろう。

このタイトルは悪くないかもしれないが、ゲームとしては面白くない。最終的にはRHBとその犬を、森の中で障害物を飛び越えたりくぐったりさせたい。そのためには、スライディングしたり、飛んだり、走ったりできるようにしなければならない。さらに、RHBが何かを見たり、動いたり、行動する際には、それぞれそうしているように見えるようにする必要がある。

本章では、これらをすべて管理するためにゲーム開発でよく用いられるパターン、「ステートマシン」をRustで実装して導入する。Rustには、ステートマシンに使用できる強力な言語機能があるが、その所有権モデルによる独特の困難さもある。ここでは、一見簡単に見えるif文で書くのではなく、ステートマシンを詳しく紹介する。

本章では以下のことを行う。

  • ステートマシンの説明
  • アニメーションの管理
  • ゲームへの状態の導入
  • IdleRunningSlidingJumpingアニメーションの実現

本章を読み終えれば、ステートマシンを使って常に正しいアニメーションが表示されるようにし、さらにアニメーションをきれいに切り替えられるようになる。

4.1 技術上の準備

本章で新たに必要になるクレートや、技術的な要素はない。本章のコードはhttps://github.com/PacktPublishing/Game-Development-with-Rust-and-WebAssembly/tree/chapter_4 ...

Get RustとWebAssemblyによるゲーム開発 ―安全・高速・プラットフォーム非依存のWebアプリ開発入門 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.