i-school - 3Dスライダーゲーム 学習内容

製作物


 斜面を滑りながら障害物を避けて、なるべく多くのサークルをくぐりながらゴールを目指す、3Dスライダーアクションゲームを製作します。スマホで動作します。

<動画 スライダー>

<動画 複数のフロアを滑ってゴールを目指す>

システムとルール


 ゲームを開始すると、プレイヤーであるペンギンはスキーを使って斜面を上から下に向かって滑り始めます。

 プレイヤーは常に下方向へ滑っている状態です。左右キー、あるいはスマホのスワイプ操作でプレイヤーを左右に移動させることが出来ます。
上下キーはアクセルとブレーキになっており、上を押すと加速、下を押すと停止します。

 またプレイヤーはジャンプすることができます。

 ゴール地点までには障害物と得点用のサークルが設置されています。サークルを上手く、くぐることが出来るとスコアがアップします。
サークルの位置は変化しますので、プレイヤーを上手く操作しつつ、斜面にあるサークルをなるべくたくさんくぐって、ゴール地点まで到着することがゲームの目的です。

 1つの長い斜面のステージではなく、短いフロアをいくつも滑っていくステージ構成になっています。

 プレイヤーにはライフがあり、斜面から空中へ落下してしまったり、障害物に接触してライフが 0 になってしまうとゲームオーバーです。

 発展編としては、ライフとは別に「寒さ」による状態の変化があります。凍えが進むと視界がどんどんと悪くなっていきます。



 スキーを楽しむゲームです。スマホで気軽に遊べます。
ただ滑るだけではなく、サークルをくぐる、障害物をジャンプなどで避ける、という道中での目的があるため、
プレイヤーを上手く操作して制御に成功することによる達成感を得る楽しみがあります。

 発展要素としましては、凍えのような追加のルールを考えたり、サークルの種類・大きさによって得点に変化をつけたり、
新しい障害物やアイテムを用意したりと、色々な楽しみ方を設計出来ます。


完成図


 この教材をすべて完成させると、以下のような画面構成を持つゲームになります。


1.メインシーン


 今回はタイトルシーンは教材内にはありません。ゲームを実行すると、メインとなるスライダーゲームがスタートします。
必要であれば、タイトルシーンについては自分で考えて楽しいイメージの設計を行って実装をしてみてください。


<動画 メインシーン>
https://gyazo.com/2622dff7c7c061ec28c5d5796c6a93e3


2.リザルト表示


 ゴール地点である大きなサークルに到着するとゲームクリアとなります。獲得したスコアがリザルト表示されます。



3.もう一度メインシーンを開始する(ゲームサイクル化)


 リザルト表示後に、画面タップを誘導するメッセージが表示され、タップすると徐々に白い画面へとフェイドアウトし、もう一度メインシーンが開始されます。

 自主課題です。いままで学習してきた成果を発揮していただいて、自分で処理を考えて実装に挑戦していただきます。


学習内容


 3Dスライダーアクションゲームを製作していくことで、習得することを目標とする技術を記載しておきます。

 また、スクリプトに関しては、たくさん書いて覚える、ということを主軸として記述を行っています。
一見、合理的・機能的には見えない処理もありますが、あくまでも書いて覚えるための手順書になっています。

 そのため、学習状況によっては、もっとスマートに書けるのでは? と感じる方もいると思いますが
そうした「気づき」を感じた方は自分なりの記述方法を考えて、よりよいスクリプトを書いていく練習としてこの教材を活用してください。

 ・設計に沿った製作作業
 ・オブジェクトの親子関係
 ・SerializeField属性
 ・アタッチとアサインについて
 ・Header属性
 ・Input.GetAxisメソッド
 ・Tagの設定
 ・OnTriggerEnterメソッド
 ・外部のスクリプトから変数の情報を参照する
 ・Instantiateメソッド
 ・パーティクルのエフェクトが正常に再生されない場合の対処法
 ・AudioSource.PlayClipAtPointメソッド
 ・Vector3.normalized変数
 ・Rigidbody.velocity変数
 ・Canvas 内のアンカー設定
 ・ToStringメソッドの引数について
 ・Collider.enabled 変数 
 ・アニメーション関連(Animatorビュー、アニメーションのステート、トランジション、パラメータ)
 ・Animator.SetBoolメソッド
 ・プレイヤーのアクションとアニメーションとの同期処理について
 ・ステージ作り
 ・ゲームサイクルを生成する方法について
 ・DoTweenの使用方法について。DORotate、DOScale、DOLocalMoveなどの各メソッド、SequenceやSetEaseメソッド、SetLoopsメソッドなどの使用方法について
 ・コルーチンの使用方法について。yield return を利用した待機処理について
 ・アセットストアからインポートしたアセットの利用方法について
 ・JoyStickを利用したスマホでの操作の実装
 ・Skybox の設定
 ・自分でプログラムを考えてスクリプトに記述する



重点学習箇所

1.アセット(インポートしたゲームオブジェクトやスクリプト)の利用方法


 多くはプレファブとしてすぐに利用できる形でゲームオブジェクトやパーティクルシステムの再生されるエフェクトを提供しています。
またGithubに公開されている無料のスクリプトがゲームの演出をサポートしてくれます。それらを上手く活用する方法を学習します。


<動画 障害物のアニメ演出 木が倒れたり、モグラが飛び出してくる>
https://gyazo.com/094030b71a72ee5bc5dd0f73378b445f


<動画 サークルの演出>
https://gyazo.com/bd8d7a7ba50e7317c2c04cc7c9a03eec



2.DOTweenの使い方


 DOTweenの基本的な使用方法について学習します。

 ・障害物の演出 
 ・視界の演出
 ・クリア時の演出

<動画 障害物のアニメ演出 木が倒れたり、モグラが飛び出してくる>
https://gyazo.com/094030b71a72ee5bc5dd0f73378b445f

 このように演出を加えると画面が華やかになるとともに、一気にゲームの見た目のレベルがアップします。


3.物理特性マテリアル(PhysicMaterial) による摩擦係数による速度の変化演出


 PhysicMaterial の機能を利用して、コライダー同士の接触時の摩擦係数を操作することにより、斜面を滑ったり、止まったりする制御を行っています。


<動画 PhysicMaterial Dynamic Friction の値を操作して停止させる>
https://gyazo.com/b581e1fb1eecf5c2f49c2458c7a90be0


参考サイト
Unity公式マニュアル
物理特性マテリアル
https://docs.unity3d.com/ja/2018.4/Manual/class-Ph...



滑っているとき Dynamic Friction 0



ブレーキをかけて停止しているとき Dynamic Friction 1




 これは1つの実装例です。他にもプレイヤーを停止させる方法はありますが、この教材では、この物理特性マテリアルの利用方法を学習します。
 
 Unityの持つ機能を上手く活用していくことで、こういったゲーム内のプレイヤーの行動に合わせた処理を実装することが出来ます。


 以上でこの手順は終了です。

 => 次は 設計を考える です。