【Unity】メッシュを結合するCombineMeshesを使って地形を結合してみる
CombineMeshesを使ってメッシュを結合するサンプルを紹介しています。このページではパーリンノイズを使ってなだらかな地形を作成して、それらのオブジェクトのメッシュをまとめています。メッシュを結合することでどれだけパフォーマンスの負荷が軽減されるのか確認するのも勉強になりますね。
あなたのゲームをいち早く完成させるための研究所
CombineMeshesを使ってメッシュを結合するサンプルを紹介しています。このページではパーリンノイズを使ってなだらかな地形を作成して、それらのオブジェクトのメッシュをまとめています。メッシュを結合することでどれだけパフォーマンスの負荷が軽減されるのか確認するのも勉強になりますね。
UnityではMathfクラスにPerlinNoiseメソッドというパーリンノイズを扱うことができるメソッドがあります。このメソッドを使ったサンプルとして、オブジェクトをインスタンス化する高さについてパーリンノイズを使って、ランタイムでなだらかな地形を生成してみます。なお、実際に使うにはパフォーマンス面で辛いので調整が必要です。
パーリンノイズ(Perlin Noise)を使う機会はたびたびありましたが、パーリンノイズそのものについての理解を深めようと思いちゃんと調べてみることにしました。実際にコードをかいて値を取得してみると面白いですね。色々と使いやすいノイズです。
MathfクラスのClampメソッドとClamp01メソッドは個人的に地味に使う機会の多いメソッドなので、ついつい紹介したくてこのページを書いてしまいました。数学的計算がたくさんできるMathfクラスはワクワクしますね。
Mathfクラスはリファレンスを眺めているだけでも色々と便利なメソッドがあってワクワクします(理系脳)数学というと敬遠してしまうこともありますが、プログラミングでは答えを見ながらコーディングできちゃうので、恐れることなく使ってみると案外楽しいかもしれません。このページではサイン、コサインを使った超シンプルなコードを紹介しています。
UnityでAndroid向けにゲームアプリをリリースしようとする時に見かけるAPIレベルについてOSのバージョンやSDKのバージョンとの関連を整理しています。ストアでリリースする際の要件にも関わってくる部分なので調べておきたい部分です。
Unityで使用しているAndroid SDKのパスと、Android Studio側で使用しているAndroid SDKのパスが異なる場合、どちらのパスを使うのか確認するダイアログが表示されます。個人的にはエクスポートしたプロジェクトでビルドするかどうかでどちらのSDKを使うか決めています。
UnityでAndroid向けビルドを行う場合はマニフェストファイルを自動的に作成してくれます。直接apkファイルを出力する場合は目にする機会がないこともあるので、apkファイルに含まれているマニフェストファイルについて簡単に紹介します。
Unityで作ったゲームをAndroid向けにビルドする時にはGradleというオープンソースのビルドシステムを使います。ビルドする際はUnityがいい感じにやってくれるのであまり意識することも少ないかもしれませんが、自分でカスタマイズしたGradleのテンプレートファイルをUnityで使って自分用に最適化することもできるので知っておくとAndroid向けの開発がさらに楽しくなります。
このページではAndroidビルドで見かけるJDK、SDK、NDKのワードについて簡単に解説しています。ざっくり言えばUnityでAndroid向けにアプリをビルドするために使うツールです。Unityで、というよりはAndroidアプリそのものを作るときに使うツールの方が近いかも。似たような名前が並んでいるので、省略前の名前を意識すると頭に入りやすいかもしれません。
このページではUnity製アプリをAndroid向けにビルドする際にx86を選択できなくなったことからAndroid Studioのエミュレータを使ってのテストは難しいかも……という点を紹介しています。普通にAndroid StudioでAndroid用アプリを作る場合はエミュレータも使えるのでご安心ください。あくまでUnityの話です。
単純な斜方投射を拡張し、ゴルフのようなゲームを作るチュートリアルです。このページではAndoridの端末向けにゲームをビルドする方法を紹介します。普段使っているスマホの中で自分のアプリが動いている姿を見るのはとてもテンションが上がるものです。
「ここは大丈夫だろう」と思っているようなところに限ってバグが見つかったりします。大丈夫そうに見えるところこそ、正常な操作とは別にボタンを連打してみるなどの変な操作もしてみましょう。自分のゲームの穴をついて裏技を見つけるくらいの勢いで試すことで、事前にバグを発見できる可能性も上がります。
Unity2020.1ではPackageManagerの一覧に表示されるパッケージが整理されたこともあり、プレビュー版のUnity Recorderについては表示方法がちょっと変わっていました。PackageManager内で表示の設定を行うのではなくProjectSettingsで設定を行うので、Unity2019.4などを使い慣れている場合はちょっと戸惑うかも。
UnityではCinemachineを使うことで映像表現の幅が広がります。正直に言えば学習コストは少なくないですが、その投資の効果は大きいものなので週末などにちょっとずつ進めていくと映像表現の面白さに触れることができます。
バグが見つかった部分の処理を直しても、再度同じようなバグが見つかることがあります。これは根本原因までたどり着いていないことからバグが再度発生しちゃう可能性があるんですよね。バグの発生原因を論理的に説明できるようになると根本原因を見つけやすくなるので、なぜこのバグが発生しているのかを深掘りして原因を考えることも大切です。
バグが発生した、あるいはバグが発生すると報告を受けた場合は、そのバグの再現方法を見つけることが大切です。どのような状況で、どのような手順でバグが発生するのかが明確になれば解決方法を見つけやすくなります。再現方法を見つける際にはいくつか仮説を立てて検証していくと絞り込みができます。
Editor拡張を使って自分が使いやすいようにカスタマイズしたウィンドウを作ることができます。例えば自分で作成したScriptableObjectのデータを一覧表示するなどのカスタマイズが便利かもしれません。ここでは簡単にウィンドウを表示するサンプルを紹介しています。
プログラムがエラーの情報を出してくれるということは、直すための手がかりがあるということです。なので、エラーを検知して、検知した結果システム的に回復可能ならエラーハンドリングのための処理を行う、無理ならエラーの状況を人間が検知できるようにする、といったことを考えておく必要があります。
最初に作った「SceneManager」や「PlayerController」やらのクラスにどんどん機能を追加していってしまうのは多くの人が経験したことがあるんじゃないでしょうかね。クラスが肥大化すると読みにくくなってメンテナンスが大変なので、適切に分割することを考えましょう。