見出し画像

UnityのProBuilderでサーキットのコースをつくってみた

最近、毎日のようにUnityを触ってclusterのワールドをつくっています。
視線入力を使っている生徒に、程よい難易度で、興味を持てるワールドを探していますが、なかなかうまいものには出会えないので、「無いものは自分で作る」という感じです。
私が学生の頃に影響を受けた先生も、同じような考えで自宅に電動工具等を備えた作業場を1部屋つくって、手の込んだ教材をたくさんつくっていました。

今週、サーキットをつくっていました。
キューブを使ってコースをつくりましたが、コースだけに別のテクスチャを貼り付けたいなと思いました。

Unityでは地面に直接ペンキを塗るような感覚で色を付けるわけではないので、単純に考えれば、コースの形に合わせてPlaneを何枚も敷き詰め、その上にマテリアルを貼ればできそうです。
でも、かなり面倒です。
「もっと複雑な形を簡単につくれる方法はないのだろうか?」
ChatGPTに聞いてみたところ、ProBuilderを教えてくれました。
今回は備忘録も兼ねて、導入から実際に使うまでをまとめてみます。
Unityのバージョンは6000.2.6f2、clusterのワールドが作れるバージョンです。


ProBuilderの導入

パッケージマネージャーを開きます。
「Window」→「Package Management」→「Package Manager」

左側の「Unity Registry」をクリックし、「Search Unity Registry」に「ProBuilder」と入力して検索します。

右側の「Install」をクリックします。

インストールが終わるとツールバーに「Tools」が表示され、ProBuilderが選択できるようになります。

PolyShapeを作る

次にコースをなぞってPoryShapeをつくります。
まず、シーンビュー右上のギズモでY方向から見るようにして、シーンを真上から表示します。

「Tools」→「Editors」→「Create PolyShape」を選択します。

あとは、コースの壁の曲がり角を順番にクリックして、コース全体を囲っていきます。
これで、自由な形の面をつくることができます。

マテリアルの貼り付け

あとは、このPolyShapeにマテリアルを設定すればよいのですが、実際にやってみると、いくつか注意点がありました。

Y軸方向に少し浮かせる

地面と今作ったPolyShapeの高さが同じだと、チラついたり表示されなかったりします。これはZ-fightingと呼ばれています。
Unityだと高さ方向がY軸なのですがw。
それを防ぐため、Y軸方向に少し浮かせます。
今回はPositionのYの値を0.06にしました。

裏側に貼り付けると見えない

最初、マテリアルを設定してもまったく表示されず、「高さが悪いのかな?」と思って、何度もYの値を調整していました。
ところが、スクリーンキャプチャーをChatGPTに見せたところ、不審な点を見つけてくれました。

Poly Shapeには「Flip Normals」という項目があります。
これは面の法線方向を反転させる設定です。
最初、ここにチェックが付いていたため、面の向きが逆になっていました。
Unityでは通常、ポリゴンの表側が表示され、裏側から見ると見えない場合があります。
そのため、せっかくマテリアルを設定していても、上から見ると何も表示されていませんでした。
「Flip Normals」のチェックを外したところ、無事にマテリアルが表示されました。
これは、知らないとかなり悩みそうです。

頂点を修正したい

一度PolyShapeをつくっても、
「ここのカーブをもう少しコースに合わせたい」
というところが出てきます。
その場合は、
「Tools」→「ProBuilder」→「Edit」→「Edit PolyShape」
を選択します。

頂点に灰色の四角が表示され、ドラッグで移動することができます。
辺をクリックすれば頂点を増やすことができます。
手間はかかりますが、きっちりと合わせることができます。

まとめ

Unityの標準的なオブジェクトだけで複雑な形をつくろうとすると、CubeやPlaneをたくさん組み合わせることになり、かなり大変です。
ProBuilderを使うと、Unityの中だけで自由な形の面や立体をつくることができます。
今回は「サーキットの地面をコースの形に合わせる」という用途で使いましたが、建物の床や道路、壁など、いろいろな場面で使えそうです。
そういえば、去年つくった学校のワールドにも、床や壁がチラつくZ-fightingがあちこちに残っています。
今年度公開するときには、ProBuilderも使いながら少しずつ修正していこうと思います。

このまとめの文章は、自分が書いた原稿をChatGPTに入れて直してもらったのですが、その中に「立体」という言葉が入っていました。
本当なのかと疑って調べてみましたが、ProBuilderで立体も作れることがわかりました。
ProBuilder、いろいろ使えそうですね。

ChatGPTに教えてもらいながらUnityを使っていると、困るたびに新しい道具を覚えていく感じがします。
気がつけば、「無いものは自分で作る」の道を進んでいるようです。