从空中指定位置向地面发射射线

 Dictionary<string, Vector3> dic = new Dictionary<string, Vector3>();
        //  transforms 是Selection类的静态字段,其返回的是选中的对象的Transform
        Transform[] transforms = Selection.transforms;
        //将选中的对象的position保存在字典中
        for (int i = 0; i < transforms.Length; i++)
        {
            dic.Add(transforms[i].name, transforms[i].transform.position);
        }
        foreach (Transform item in transforms)
        {
            Debug.Log(item.name + ":" + item.position);
        }


        var refscript = transforms[0].GetComponent<mmmo>();
        int index = -1;//创建的下标
        float Scale = 0;//缩放值
        //创建多个对象
        for (int j = 0; j < refscript.number; j++)
        {
            index = Random.Range(0, refscript.arr.Length);
            //创建一个对象
            GameObject gb = Instantiate(refscript.arr[index].gameObject);
            gb.SetActive(true);
            gb.transform.SetParent(transforms[0].transform);
            //创建一条射线
            RaycastHit hit;
            Ray ray1 = new Ray(new Vector3(transforms[0].position.x, 300, transforms[0].position.z), Vector3.down);
            if (Physics.Raycast(ray1, out hit))
            {
                gb.transform.position = new Vector3(Random.Range(refscript.bx, refscript.ex), hit.collider.transform.position.y, Random.Range(refscript.by, refscript.ey));
            }

            Scale = Random.Range(refscript.ScaleMin, refscript.ScaleMax);
            gb.transform.localScale = new Vector3(Scale, Scale, Scale);
            gb.transform.Rotate(new Vector3(0, Random.Range(refscript.RotationV3YMin, refscript.RotationV3YMax), 0));
        }

猜你喜欢

转载自blog.csdn.net/wk201403010114/article/details/88868079
今日推荐