青いやつの進捗日記。

べんきょうのしんちょくをかいていきます。プログラミング初心者。

UnityでAR上でモノ同士を衝突させる

f:id:XxGodmoonxX:20180806162227p:plain

画像認識で、もともと入ってるPlayerってオブジェクトを表示させるようにします。

で、その形に沿って衝突を発生させるには、

Mesh Colliderを設定すれば、Meshに沿って衝突するようになります。

f:id:XxGodmoonxX:20180806162337p:plain

こんな感じで新しくPhysic Materialも設定すれば、

跳ね返りがどれくらいか、等も設定できるようになります。

qiita.com

techacademy.jp

//CreatePrimitiveで動的にGameObjectであるCubeを生成する
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
//Cubeに適用するランダムな色を生成する
Material material = new Material(Shader.Find("Diffuse"))
{
  // color = new Color(Random.value, Random.value, Random.value)
  color = new Color(0, 0, 200)
};
//ランダムに変化する色をCubeに適用する
cube.GetComponent<Renderer>().material = material;
//端末をタップして、ランダムな色のCubeを認識した平面上に投げ出すように追加していく
//Cubeの大きさも0.2fとして指定している
cube.transform.position = cam.transform.TransformPoint(0, 0, 0.5f);
cube.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f);
//CubeにはRigidbodyを持たせて重力を与えておかないと、床の上には配置されないので注意が必要。Rigidbodyで重力を持たせないとCubeは宙に浮いた状態になる
cube.AddComponent<Rigidbody>();
//これでタップしたときに斜め上にキューブ飛んでいく?そして衝突計算
cube.GetComponent<Rigidbody>().AddForce(cam.transform.TransformDirection(0,1f,2f),ForceMode.Impulse);

Cubeはコードで生み出してて、RigidBodyが設定されているので、

これでタップしたら生み出させるキューブと、PlayerがAR空間で衝突します。

いや、たぶん元々衝突はするのかな…でもMesh ColliderじゃなくてBox Colliderなんですよ、たぶん。たしかそこにちょっと違和感あったんです。


夏休み、突入。なにしようかな。