見出し画像

【Unity&Blender】浜辺でスイカを割る

海に行きたいだけの人生だった

夏といったら海だろう常識的に考えて。しかし、こんなご時世なので海水浴場は休場ラッシュだし、長距離移動そのもののリスクが高すぎる。残念ながら今は引き篭もる事しか出来ない。つらい。

よし、じゃあ電子空間に海を作って行った気分になったろうじゃねえか!というのが今回の趣旨。たしか、ドラえもんでも家の中を温泉旅館にした話あったじゃない。あんな感じで、家の中に居ながら気分だけでも味わいたい。

とはいえ、地形的な奴をモデリングした経験なんぞ皆無である。しかし、ここで大事なのは上手い下手じゃあない。心じゃよッ!

Blenderで海岸的な何かを作る

とはいえ、海岸なんて長いこと行っていない。そもそも海の近くって何があればいいんだっけ?まあ、思いつくものをテキトーにぶちこんでみようか。

画像1

そして2時間ぐらいで出来上がったのがこちら。THE・殺風景。ちなみにテクスチャは1枚も貼っていない。最終的にUnityに入れたいが、ポリゴン増やしすぎて重くなったら嫌なので全体的にローポリである。

画像2

島の山部分は横着して、パーティクルでテキトーに木を生やしてたのでスーパーの売り場に積んであるキャベツみたいになってる。かといって俺の実力だとそんなリアルに作れないので、今はこれで我慢する。このあたりはきっと将来の俺がKOOLな方法で解決してくれるだろう。

画像3

防波堤や船、灯台とかテトラポッドあたり置いたらそれっぽくなるかなぁと思って置いてみた図。そういや灯台って赤だっけ白だっけ?まあいい。せっかくだから俺はこの赤の灯台を選ぶぜ!

画像4

個人的にテトラポッドの形状が狂おしいほど好き。ちなみに「消波ブロック」が正式名称で、「テトラポッド」は特定企業の商標らしい。絆創膏でいうところの「カットバン」とか「バンドエイド」みたいな立ち位置なんね。

画像5

「海岸の近くってだいたい道路あるよなァ!?」と思って道路敷いたのは良いものの「あれ?道路から砂浜にどうやって降りるんだ???」ってなったので雑に階段を追加した図。日本全国探してもこんな珍構造は無い気がする。よく見たら階段に手すりもないので、落ちたら骨折れるぞ。

画像6

木はヤシっぽいやつをこしらえたけれども、よくよく考えたら日本で海際に生えてるのってだいたい松な気がする。松さんは、土質が貧弱だろうが潮風にあたろうがバリバリ元気に育つらしい。すごいと思いました。(小並感)

Unityに砂浜を持っていく

画像7

Blenderで作ったやつをFBXでエクスポートしてUnityに読み込む。現時点でポリゴン数は1万行ってないので、きっと軽いぜ。

画像8

Unityで海の表現をどうするか小一時間悩んだのだが、StandardAssetとかの水面を使うとやたらリアルすぎるので、板ポリ一枚を半透明にして上下に動かすだけの超絶手抜き構造にした。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using DG.Tweening;

public class SeaWave : MonoBehaviour
{
   public float offset;
   public float time;

   // Start is called before the first frame update
   void Start()
   {
       this.transform.DOMove(new Vector3(0, this.offset, 0), this.time).SetRelative().SetLoops(-1,LoopType.Yoyo).SetEase(Ease.InOutSine);
   }
}

動かすスクリプトこんなん。みんな大好きDOTween。

船にも同じスクリプトくっつけて上下運動。あー、防波堤から釣りしてえなー。小アジとかスズメダイあたりをサビキでドゥンドゥン釣りたいぜ。そしてカラッと揚げて南蛮漬けにするんだ・・・(捗る妄想)

スイカを作る

ここまで砂浜作ったところで唐突に「そういや今年スイカ食べてねえなぁ。よし、浜辺でスイカ割ろう!」と思った。思いついた事はどんどんやってしまえ。こういうのは、理屈じゃない。勢いが大事だ。

画像9

UV球にテクスチャはっつけただけで、あっけなくスイカができてしまった。しかし、こいつを割れるようにどう加工してやろうか。オブジェクトをいい感じに分割したいが、手動で割っていくのは非常に骨が折れる。

画像10

というところでググってみると「Cell Fracture」とかいうアドオンを使えばいい感じに割れるらしい。よーし、パパ100分割しちゃうぞ~!

画像11

いい感じに割れた!ちなみに、分割しただけだと球の内部にも勝手に皮のマテリアルが割り当てられたので、そのあたりは果肉っぽい色に変えといた。

あとは、Unityに持っていって実際に割ってやればよかろうなのだ。まあ、よくわからんがたぶん物理エンジン使えばなんとかなるじゃろ。(てきとー

スイカを割る

よく3Dのゲームでツボ割ったり箱壊したりするけど、アレどうやってやるんだろうな?というところで「Unity オブジェクト バラバラ」でググったらこのような記事が出てきた。インターネットすごい。

画像12

スクリプトをBoltに起こしたけど丸パクリで本当すんませんね…ヘヘ…。AddForceのみならずAddTorqueでさらに回転加えてるのがミソだろう。

うん!破裂した!(大満足)

今回の技術を応用したら、他のオブジェクトを壊すときにも使えそう。予め、Blender側でモデル作るときにオブジェクト分けとく必要はあるけど。

しかし、破片全てにRigidbodyとMeshColliderつけてるから大量に並べた時とかに重くならないかは不安だなぁ。破裂するアニメーションを予め作っといた方が良いんかしら。

俺の夏は終わらない

とりあえず勢いと思いつきで砂浜作ったりスイカ爆破したりしたけれど、夏祭りや花火といった夏の風物詩を全然味わっていないので、これからも思いつきでなんか作るかもしれない。

しかしそろそろいい加減ゲーム作らないとな・・・というジレンマ。

この記事が気に入ったらサポートをしてみませんか?