##はじめに
UnityVersion2018.2.14f1を使用。
関数・設定は基本的なものだと思うので、バージョンが相当古くない限り使えると思います。
表題の通りSphereがCubeに当たったらCubeが消滅して100が表示されます。
100はGameObject 3DTextを使用。
##用意するもの
- GameObject
- Cube
- Sphere
- 3DText
#Cubeの配置・設定
- 配置
メニューバーのGameObject
↓
3DObject
↓
Cubeを選択
Cubeがフィールド上に配置されます。
InspectorタブにあるBox Colider欄のIs Triggerにチェックを入れる。
Position.yをCubeより上に設定する(Cubeが原点(0,0,0)の場合)。
##Sphereの配置・設定
- 配置
Cubeの配置と同様の方法でSphereを選択する。
↓
InspectorからTransform Position YをCubeより上の設定値にする。
- 設定
HierachyのSphereを選択
↓
Inspectorを表示させAdd Componentボタンを押す
↓
検索からRigidbodyを探して選ぶ
##100の作成・プレハブ化
Cubeの配置と同様の方法で3D Textを選択する
↓
NewTextが表示され選択し、TextMeshのTextに100と入力する。
↓
Projectに生成されているフォルダー(どこでも良い)にInspectorのNewtextを挿入する(プレハブ化)
##スクリプトを組む
HierachyのCubeを選択
↓
Inspectorを表示させAdd Coonentボタンを押す
↓
検査からNew Scriptを探して選ぶ
↓
Nameは何でもよい(ここではCubeにしておく)。
↓
編集作業
public class Cube : MonoBehaviour {
//GameObjectの設定
[SerializeField] GameObject newtext;
//CubeRendererの設定
[SerializeField] Renderer RendererCube;
//Cubeが消えたところにTextを表示させる。
Vector3 pos = new Vector3(-1.0f, 1.0f, 0);
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
//Sphereが当たった時の設定
void OnTriggerEnter(Collider other)
{
//Rendererを偽(オフ)にする。
RendererCube.enabled = false;
//new Textクローンの生成
Instantiate(newtext, transform.position +pos, Quaternion.identity);
//4f後にCubeが消える
Destroy(gameObject, 4f);
}
}
##[SerializeField]にGameObjectを挿入する
Cube(Hierachy)を選択する
↓
Cube(Script)のRenderer CubeにCube(Hierachy)を挿入する
↓
プレハブ化したNew textをCube(Script)のTextに挿入する。
##再生ボタンで結果
わかりやすくCubeと100を赤にしてあります。
##補足
3Dのオブジェクトと3DTextの中心座標(0,0,0)は設定上同じでも実際に配置すると、違う場所に表示される。
いくつかサイトを検索して調べてみたが、設定で改善する方法が見つからず、Vertex値をいじくることで解決。
##感想
今回は画像と文字を使ったが、画像を使う場合文字を減らすことができるかつ理解がしやすいと感じた。
やっていることはたいしたことがないが、今後も自分の勉強の為にアップデートしていきたい。