フリーアセット「Gold Coins」を3Dマリオのコイン風に使う。
銅貨、銀貨、金貨と各種の山積みバージョンの3Dモデルがあるが、今回使うのは「Gold Coin – Single」。
自立させる
「Gold Coins」をインポート。
そのままではリアルサイズなので、とても小さい。
隣は「10x10x10cmのCube」。
- 親の「GoldCoin」のTransformのPositionを(0, 0, 0)に設定する。
- 子の「GoldCoin」のTransformのPositionを(0, 0, -0.1)に設定する。(中心の調整)
- 子の「GoldCoin」のTransformのScaleを(100, 100, 100)に設定し、1m程の大きさにする。
- 子の「GoldCoin」のTransformのRotationのXを90にして縦向きにする。
- 子の「GoldCoin」にMeshColliderを追加する。
- MeshColliderのConvexをtrueにする。
- 親の「GoldCoin」にRigidbodyを追加する。
- 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")) {
//コイン取得処理
}
}