【Unity】[DEVTOID] Gold Coins を3Dマリオのコイン風に使う

フリーアセット「Gold Coins」を3Dマリオのコイン風に使う。
銅貨、銀貨、金貨と各種の山積みバージョンの3Dモデルがあるが、今回使うのは「Gold Coin – Single」。

自立させる

「Gold Coins」をインポート。
そのままではリアルサイズなので、とても小さい。
隣は「10x10x10cmのCube」。

  1. 親の「GoldCoin」のTransformのPositionを(0, 0, 0)に設定する。
  2. 子の「GoldCoin」のTransformのPositionを(0, 0, -0.1)に設定する。(中心の調整)
  3. 子の「GoldCoin」のTransformのScaleを(100, 100, 100)に設定し、1m程の大きさにする。
  4. 子の「GoldCoin」のTransformのRotationのXを90にして縦向きにする。
  5. 子の「GoldCoin」にMeshColliderを追加する。
  6. MeshColliderのConvexをtrueにする。
  7. 親の「GoldCoin」にRigidbodyを追加する。
  8. RigidbodyのConstraintsのFreezeRotationのXとZをtrueにする。(回転にTransformを使うのでYもtrueにしても良い)

隣は「1x1x1mのCube」

回転させる

新規に「Coin」というScriptを作成。
親の「GoldCoin」にScriptの「Coin」を追加する。
Scriptには次のように記述。

void Update ()
{        
    transform.Rotate(Vector3.up * 5.0f);
}

Vector3.upで回転軸の指定、
5.0fで回転量を指定しているので、任意の値に変えても良い。

シェーダーの変更(任意)

このままでは色味が悪いのでシェーダーを変更する。
ユニティちゃんトゥーンシェーダー2.0
(シェーダーを使用するだけならライセンス表記は要らないので気にせず使う)

ダウンロードして任意のフォルダで解凍。
UnityEditorでAssets→Import Package→Custom Package…
フォルダ内のUTS2_ShaderOnly_v2.0.7_Release.unitypackageを指定。

子の「GoldCoin」のShaderをUnityChanToonShader→「Toon_DoubleShadeWithFeather」に変更する。
(スマホ向けならUnityChanToonShader→Mobile→「Toon_DoubleShadeWithFeather」でも良い)

色味が良くなった。

Coinの取得判定の範囲を大きくする(任意)

OnCollisionEnterで通常のコインの3Dモデル自体の当たり判定が出来るが、
任意の大きさのSphereCollider(isTrigger = true)を追加してOnTriggerEnterで判定すれば
見た目より大きめの当たり判定が出来る。

void OnTriggerEnter (Collider col) {
    if (col.gameObject.CompareTag("Player")) {
        //コイン取得処理
    }
}

タイトルとURLをコピーしました