#6【備忘録】ProBuilderを使ってステージ作成してみる【無謀にも3D東方二次創作ゲーム作成】
こんにちは。しょう@ゆっくり学ぶチャンネルです。
少し時間が空きましたが、東方プロジェクトの2次創作3Dゲームの続きを作ります。
↓前回の記事
で、今はこんな感じになってます。
・・・なんか、ゲーム性が変わってますね。
実は島を探索するゲームは試しにビルドしてみたのですが、とんでもない数のエラーが出てきて心が折れたので、以下の記事を参考に1から作り直しました。
あとUnity1weekの参加と部屋の改造で1月近く製作期間が空いてしまったのもあり、気持ちも切れてます。
こういうときは、別のプロジェクトを立ち上げたり、新しい教材の勉強を始めたほうが良いのです。
なので、このシリーズも次回で一区切りとしようと思います。
では、いつもお世話になっている、くろくまそふとさんの「ユニティちゃんパルクール2020」で気になった点や、変更を加えた点を上げていこうと思います。
1.キャラクターの制御にStarter Assetsを使用した
教材の中で、キャラクターの制御は「くろくまキャラクターコントローラー」を使っているのですが、前回の記事まででStarterAssetを使用していたので、そっちを使いました。
TimeManagerコンポーネントでは、ステージスタート前やゴール後等のタイミングではisActive = falseとなり、プレイヤーの動きを止めています。
StarterAssetを使うにあたり、以下のようにTimeManagerを変更しています。
public class TimeManager : SerializedMonoBehaviour {
public bool isActive = false;
***省略***
//KurokumaCharacterController player; //これを
PlayerInput player; //こちらに変更
***省略***
void Start() {
***省略***
//player = GameObject.FindGameObjectWithTag("Player").GetComponent<KurokumaCharacterController>();//これを
player = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerInput>();//こちらに変更
***省略***
}
***省略***
// カウントダウンタイマー
void Timer() {
if (!isActive || currentTime <= 0f) {
return;
}
***省略***
}
***省略***
if (currentTime <= 0f) {
isActive = false;
}
}
***省略***
// ステージスタート時のカウントダウン
IEnumerator Countdown() {
if (!countdownEnabled || countdownSe.Length == 0) {
yield break;
}
isActive = false;
// プレイヤーを動けなくする(=入力を受け付けないようにする)
//player.InputEnabled = false;//これを
player.enabled = false;//これに変更する
// カウントダウン開始前の待ち時間
yield return new WaitForSeconds(countdownWaitTime);
countdownText.enabled = true;
***省略***
isActive = true;
// プレイヤーを動けるようにする
//player.InputEnabled = true;//これを
player.enabled = true;こちらに変更
***省略***
}
}
player変数にPlayerInputを格納し、そのenebledを切り替えることにより、操作を受け付けるタイミングを制御しています。
なお、StandardAssetを使いだしてから、謎のエラーメッセージが出ていて、ずっと見ないふりをしていたのですが、以下の記事で解決しました。
要はInputSystemとInputManager両方使えるように設定変更しました。
2.テクスチャの密度を調整した
テクスチャをデフォルト値のMaterialのベースマップにして使用すると、タイルの1枚1枚が異様に大きくなることがあるので、以下の記事を参考にMaterialのタイリングの数値を変更しました。
3.ワールドスペースにUIを表示させた
教材の上のページではゴール地点を作るときに、画像を作って、Materialにして、Quadに適用しています。
ただ画像なので、文字をアニメーションさせることはできません。
なので、ステージ選択画面は以下のようにしました。
以下の記事を参考にUIをワールドスペースに表示させて実現させています。
テキストの表示にはTextやTextMeshProではなく、その2つのいい所どりをしたアセット、SuperTextMeshを使用しています。かなりお高いのですが、かなり使い勝手はいいと思います(というか、TextMeshProが日本語環境に向いてなさすぎる)。
ただ、別のシーンの作成を進めてから、ステージ選択画面に戻ってくると、テキストが真っ黒になっていたり、消えていたことがありました。
これはSuperTextMeshのデフォルトMaterialから別の自作のMaterialに変えると直ったので、おそらく以下の記事のTextMeshProと同様のバグだと思われます。
↓こんな現象もあるらしい
4.ProBuilderあれこれ
ステージはProBuilderで作っています。「ユニティちゃんパルクール2020」の教材以外でも参考になりそうな記事が沢山ありました。
ただ、結構使うのに慣れがいりそうです。
次回予告・UIをコントローラーで動かせるようにするぜ!
スタート画面も作って、これで終わりっ!と思いましたが、一つ重大な欠点がありました。
コントローラー操作前提で作ってるのに、UI(ボタン)の操作はマウスでしかできないということです。
流石にコントローラーでゲーム内の操作を全てできるようにして、発表するべきですね。今後も必ず使いますしね。
ということで、燃え尽きて灰になっているモチベーションに、無理やり火をつけてアップロードまでいきますので、よろしくお願いします。
<次の記事>
この記事が気に入ったらサポートをしてみませんか?