2016年12月10日

Unityでゲーム初めて作った(「ゆにぜに!」)

部品ばっかり研究していたのですが、ようやくひとつ完成品ができましたよ。 作品紹介ページはたぶん別に作るので、これは作ったときに苦労した点や気づいた点などのメモ。

http://www.nscripter.com/UniZeni.zip

2016-12-09.jpg2016-12-07.jpg

3D迷路を走り回り、4種類ある罠をかいくぐりコインを集めるジャンプアクションゲームです。いろいろ勉強になりました。そこそこ遊べると思いますが、これは練習作のつもり。次から本気で収益化を狙った作品を作っていきますよ。まずはAndroidで無料広告モデルだ。
さて、このゲームの反省点について。

  • MoonSharpを使ってスクリプティングしてるんだが、このゲームではほとんど意味がない。ああいうのはADVとかで威力を発揮するものだ。多分次の作品で本格的に使う。
  • StandardAssetの出来合いのコンポーネントとやりたいことの埋め合わせに主に苦労した。まあ、ソースもあるしアセットフォルダに入るのはコピーされたファイルだし、いざとなったら解析して改造すればよい。ただ、TPSコントローラはたぶん次は自分で作ると思う。
  • マップはJSONから読んでオブジェクトを配置しているのだが、元々は読み込み実験がしたかっただけだったので、Unityのレベルエディタ上で作ったほうがいろいろリッチなものが作れるだろうとは思います。
  • ガチの3D迷路にしてしまったため、敵キャラを入れるのとかはちょっとゲーム性的に難しそうで断念した(これだと視界がほとんどないし、攻撃手段が踏むだけだとかなりヤな感じになりそう)。
  • ユニティちゃんが弾き飛ばされる演出でRigidBodyで計算して速度を与えて実装しようとしたけどどうも思うようにいかず、結局Transform.Translateで動かしたら一番すっきりした。加速度運動くらいなら時間との関数で簡単に書けるしね。
  • ふっとばされたユニティちゃんがダメージモーションの際に壁にめり込む問題の解決。弾き飛ばされてる間はTPSコントローラに最初からついてるカプセルコライダーをenabled=falseにして止め、お尻のTransformにつけたボックスコライダー(頭のほうまで大きめに入るようにしてある)をオンにして判定しうまくいきました。ちなみに両方オンにすると自分のコライダーに引っかかって動けなくなるみたい。レイヤを使って回避することもできるっぽい雰囲気だが今回は単にオンオフで対応。
  • 今回スキンメッシュはユニティちゃんのみ。あとはTransformを時間でアニメーションさせてます。不気味多面体や三面の壁や空の色アニメはマテリアルからシェーダーに変数を設定してます。このシェーダーの変数名については、公式サイトからシェーダーのソースを落とせるのでそれを解析すればだいたいわかる。
    補足:Animation Clipでもシェーダー変数含めだいたいのものはアニメーション出来るので、後でUnityエディタが他のツールからの使用をサポートしてくれる可能性を考えるとそっちで書くべきか。iTweenもループも含めだいたいのことはやってくれるので使用を検討。スクリプトで書くのは(コード量は小さいとはいえ)悪手かも。
  • モデルはほとんどプリミティブそのままなのが多いけど、テクスチャは3D-CoatやSubstancePainterの練習だと思って多少頑張ってみた。あとはIllustratorとPhotoshopかな。レベルエディットはTiled Map Editor、そのために使うマップチップ作成にはEDGEを使用しました。
posted by NTak_Indies at 14:31| Comment(0) | TrackBack(0) | 日記