Beispiel #1
0
    public void PlaceBlockOnPlane(Pose pose)
    {
        GameObject go        = Instantiate(block[index], pose.position, Quaternion.identity);
        float      blockSize = go.GetComponent <MeshRenderer>().bounds.size.x;

        if (worldZeroBlock == null)
        {
            worldZeroBlock = go;
            ARAnchor        anchor = ARManager.arAnchorManager.AddAnchor(pose);
            PlaceableObject po     = worldZeroBlock.AddComponent <PlaceableObject>();
            po.Init(anchor);
        }
        else
        {
            go.transform.parent = worldZeroBlock.transform;
        }

        if (index == (int)eBlocks.GRASS)
        {
            RaycastHit topHit;
            Ray        ray = new Ray(go.transform.position, transform.up);
            if (Physics.Raycast(ray, out topHit, blockSize / 4))
            {
                //ARDebug.Log(topHit.collider.gameObject.name, 5);
            }

            if (Random.Range(0, 4) == 0)
            {
                int     flowerIndex = Random.Range(0, flowers.Length);
                Vector3 pos         = go.transform.position;
                pos.y += blockSize;

                GameObject flower = Instantiate(flowers[flowerIndex], pos, Quaternion.identity);
                go.GetComponent <Block>().foilage = flower;
                //ARDebug.Log("Spawned flower", 5);

                flower.transform.parent = go.transform;
            }
        }

        spawnedBlocks.AddLast(go);
    }