Unity++blog.

UnityやC#とかについて学習したことを書いてます

3Dオブジェクトのお金を空から降らす

今回はパーティクルシステムを使わずにお金を空から降らす記事です。処理が重いのかどうかはわかりませんが、webGLにビルドしても問題なく動くので記事にします。

 

パーティクルシステムを使わない理由は当たり判定をとりたかったからです。(レイを飛ばしてその当たり判定をとる。パーティクルシステムにもcolliderのイベントはありますが、調べた限りレイを飛ばして当たり判定を取ることはできませんでした。)

f:id:nabesi777:20181123121343g:plain

 

 

それではまず降らすお金オブジェクトを準備します。

f:id:nabesi777:20181123123247p:plain

すべて空オブジェクトの子要素としてます。この空オブジェクトへは当たり判定を取るためにボックスコライダーを、動かすためにリジッドボディーをAddComponentから追加します。ボックスコライダーは大きいのでお金の形に合わせてEditColliderで調整する必要があります。

 

f:id:nabesi777:20181123123326p:plain

f:id:nabesi777:20181123123635p:plain

 

舞っているように見せるためにそれぞれにランダムで回転するスクリプトを作成します。これを空オブジェクトへアタッチします。

 

Project上からインスタント生成するので、Hierarchy上ではなくProject上でこの設定になっているように注意します。

f:id:nabesi777:20181123124356p:plain

 

次に重力を弱くします。Edit>ProjectSettings>Physicsからおこないます。(ゲーム全体の重力が弱くなるため、個別にのみ適用させたい場合は別にスクリプトを準備しなければいけません。)

 

f:id:nabesi777:20181123123818p:plain

 

f:id:nabesi777:20181123124035p:plain

 

指定のエリアにランダムでインスタンスを生成させるスクリプトを作成します。スクリプトを作成したら空オブジェクトを作成してアタッチします。

 

 

 そのインスペクターへお金プレハブを格納します。生成時間などもここから調整することができます。

f:id:nabesi777:20181123125109p:plain

 

 これで空から降るお金を表現することができました!