かさたな日記

主にUnityを使った制作記録。書いてる人は初心者です。一緒に頑張ろう。

Unityでゲーム制作:クリスマス編

早いもので2017年も暮れかかり、世間はクリスマスムードですね。
というわけで、今回は『クリスマス』のテーマでゲームを作ってみました。

【X'mas Painter
https://unityroom.com/games/xmaspainter

雪を降らせる魔法のソリを操って、
制限時間内に舞台となる街をなるべくたくさん白く塗りつぶす、
ペイントレーシングミニゲーム。....某ス○ラトゥーンみたいな感じ( おこがましい!
よかったら遊んでくださいな。


発想としては 、
セールでアセット買ったので塗るゲーム作りたい

クリスマスシーズン

ホワイトクリスマス

雪で白く塗ってみよう!

という連想だったのですが、
雪を積もらせるというアイデア自体は
以前のUnity1weekの テーマ:積む のときからありました。
ただ、そのときは色々あって製作時間が取れず間に合わなったので、
(取りかかれたの最後の2日だったハズ...)
今回改めて挑戦という形になりました。
とはいえ、1週間で全部作れたわけではないけどね!


今回、苦労した点は
ペイント用のアセットのコードの読み解き(大変勉強になりました)と、
ソリ、それを追いかけるカメラの挙動です。
はい、全部じゃんとか言わない。

操作感はディフォルメされたレーシングゲームのような感じにしたかったので
AddForce等ではなくて、velocityの数値を直接変更することで
加速・減速、各種挙動の制御を行っています。

このとき、変更する値はXZ面のみにしているので
上下へのジャンプや自由落下は物理挙動をそのまま使用できるようになっています。

わかった方もいらっしゃるかもしれませんが、参考元はカー○ィのエアライドです。
押し入れからゲームキューブを引っ張り出して遊び....研究しました。

エアライドといえば滑空。
ふんわり気持ちよく滑空したい。
今回は結構簡単に作ってあります。

public float flight; //重力に逆らうパワー
private Rigidbody myRigidbody; //どこかでコンポーネントをキャッシュしてね

void Update()
{
        //velocityが下向きになったら滞空補正をかける
        if (myRigidbody && myRigidbody.velocity.y < 0)
        {
            myRigidbody.velocity += Vector3.up * flight * Time.deltaTime;
        }
}

落下状態になったら上方向に力を加えてあげてるだけです。
実際はマネージャからキャラのUpdateを行うようになっているのですが
たくさんキャラが出るわけじゃないので直接Update()を書いていても
あんまり変わんないと思います。

坂道によるジャンプは摩擦係数を下げる(Phisics Materialを差し替える)
ことで勢いに応じて跳ね上がる感じになっています。


ホントは色々アイテムなども置きたかったのですが
クリスマスを過ぎてしまいそうだったので今回はここで一応の完成としました。
遊びとしては気に入っているのでスマホで動きそうならば
今後、発展型も作ってみたいと思います。

ところで、マップ上にいるペンギンさんは体当たりをすることで
コロコロと転がります。転がっている間はペンギンさんにもペイント判定がつくので
うまく利用すれば高得点が狙えるかもしれません。
(ある程度速度が落ちるとペンギンさんは起き上がってまた歩きだします)


さて、今回もアセットを結構使わせていただいたので
そのご紹介をしたいと思います。



【Chrismas Gift】
無料のアセットです。
空飛ぶソリとプレゼント箱はここから使用させてもらってます。
ソリはすごくきれいなのに頂点数は抑えめでとってもありがたい。



【FREE Christmas Assets / Low Poly】
こちらも無料のクリスマスアセットです。
ふわふわな質感がすばらしい帽子を使わせていただきました。



【Paint in 3D】
今回の要。
3Dオブジェクトにペイントできるアセットです。
使い方の説明は必要最小限、という感じでしたが
コードの内容がとてもわかり易く、またとても丁寧にコメントされているので
理解するのは難しくありませんでした。
ペインする機能のみならず、コードの書き方も勉強になりました。
付属している様々なサンプルシーンもありがたいです。



【More Effective Coroutines [PRO]】
コルーチンを効率化・高速化してくれるアセットです。
Monobeihaverを継承してないクラスからも呼び出せるようになったりして便利。
コルーチンは各所で使用しているので重宝しております。



【Amplify Color】
カメラにアタッチするだけでカラーグレーディングを行える人気アセットです。
ふんわりした暖かめの雰囲気を演出するのに活躍してくれています。



【Friendly & Clean UI】
シンプルでスッキリした雰囲気が魅力のUIキットです。
各種マークの詰め合わせのフォントが付属しているのもポイント。



【Toony Colors Pro 2】
前回の大型セールで買ったアセットの一つ。
アニメチックな雰囲気を演出できるトゥーンシェーダーです。
豊富なプリセットが付属しているだけでなく、
必要に応じてカスタマイズしたシェーダを出力できる機能もあります。



【Cartoon Town - Low Poly Assets】
カートゥーンな雰囲気が可愛い、町のモデルのセットです。
なんとなく某どう○つの森を彷彿とさせる感じ。
ポリ数、頂点数ともに割りと抑えめなのでモバイルでも使えそうです。

買ったときはもう少し安かった気がするのですが、値上がりしちゃったのかなぁ。。。




【Penguins】
とってもかわいいペンギンさんのモデルです。
かわいい以外に言うことはないのかというくらい可愛いです。

ここで紹介しているのはペンギンさんのみのアセットですが
ボクは実はペンギンさん以外もセットのものを買っております。



【Magic Arsenal】
各種魔法エフェクトの詰め合わせです。
エフェクトの綺麗さもさることながら
効果音まで付属しているのがとっても使いやすくありがたいです。
製作中のゲームでも使用させていただいております。



【DOTween Pro】
定番のTweenです。
セールにてProバージョンを購入しました。
無料版との違いはエディタ画面でパスをセットできたり、
各種制御用のコンポーネントが付属していることです。

今回は実はpro版ならではの機能というのは使用していないのですが、
今後、演出面で色々と使用できそうです。



【Terrain To Mesh】
Terrainを軽量化したMeshに変換できるアセットです。
テクスチャも1枚にまとめて一緒に出力することができます。
頂点数等、かなりの軽量化になるのでモバイルでも使いやすくなります。



【First Fantasy for Mobile】
様々なファンタジーシーンを演出できるアセットです。
モデルやテクスチャはもちろんのことパーティクルまで付属しています。
今回は中央の木と地形のテクスチャリング、また降ってくる雪のエフェクトに使用させてもらっています。


【Dynamic Starry Sky】
前回に引き続いて使用させてもらったスカイドームようシェーダです。
グラデーション位置や星の数、またたきなどをカスタマイズできます。
クリスマスな星空を演出するのにぴったりでした。