コード例 #1
0
    private void CreateMesh()
    {
        Vector3[] vertices  = CreateVertices();
        Vector2[] uvs       = CreateUvs();
        int[]     triangles = CreateTriangles();

        //triangles = new int[3] { 0, 1, 2 };

        Mesh mesh = new Mesh();

        mesh.vertices  = vertices;
        mesh.uv        = uvs;
        mesh.triangles = triangles;


        GameObject terrain = new GameObject("Terrain", typeof(MeshFilter), typeof(MeshRenderer));

        terrain.transform.localScale = new Vector3(1, 1, 1);
        terrain.transform.position   = new Vector3(0, 0, 1);

        terrain.GetComponent <MeshFilter>().mesh               = mesh;
        terrain.GetComponent <MeshRenderer>().material         = material;
        terrain.GetComponent <MeshRenderer>().sortingLayerName = "foreground";

        ColliderCreator colliderCreator = terrain.AddComponent <ColliderCreator>();
    }
コード例 #2
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();
        ColliderCreator cc = target as ColliderCreator;

        if (GUILayout.Button("create collider"))
        {
            cc.Start();
        }
    }
コード例 #3
0
ファイル: Apple.cs プロジェクト: dmytronasyrov/WoodBreaker
    private void OnCollisionEnter2D(Collision2D collision)
    {
        ColliderCreator colliderCreator = collision.gameObject.GetComponent<ColliderCreator>();
        Platform platform = collision.gameObject.GetComponent<Platform>();
        Vector2 normal = collision.contacts[0].normal;
        bool isGameOver = false;

        if (colliderCreator != null && normal == Vector2.up)
        {
            isGameOver = true;
        } 
        else if (platform)
        {
            leavesParticle.transform.position = platform.transform.position;
            leavesParticle.GetComponent<ParticleSystem>().Play();

            platform.GetComponent<Animator>().SetTrigger("isCollidingApple");

            if (normal != Vector2.up)
            {
                isGameOver = true;
            }
        }
        else if (!colliderCreator && !platform)
        {
            SpriteRenderer renderer = collision.gameObject.GetComponent<SpriteRenderer>();
            Vector3 woodenPlankPos = collision.gameObject.transform.position;
            Vector3 particleInitPos = new Vector3(woodenPlankPos.x + renderer.bounds.extents.x, woodenPlankPos.y - renderer.bounds.extents.y, -1);

            GameObject particle = (GameObject) Instantiate(woodParticle, particleInitPos, Quaternion.identity);
            ParticleSystem particleSystem = particle.GetComponent<ParticleSystem>();

            Destroy(collision.gameObject);
            Destroy(particle, particleSystem.startLifetime + particleSystem.duration);
            GameManager.points++;
        }

        if (isGameOver)
        {
            GameManager.GameOver();
        }
        else
        {
            _direction = Vector3.Reflect(_direction, collision.contacts[0].normal);
            _direction.Normalize();
        }
    }
コード例 #4
0
    // Use this for initialization
    void Start()
    {
        MeshCreator     meshCreator     = new MeshCreator();
        ColliderCreator colliderCreator = new ColliderCreator();

        for (int i = 0; i < 10; ++i)
        {
            Vector3    pos  = new Vector3(i * 4.0f, 0.0f, 10.0f);
            Quaternion rot  = Quaternion.AngleAxis(Random.value * 360, Vector3.up);
            Vector3    size = Vector3.one + Vector3.up * i * 0.2f;
            meshCreator.Add(prefab, pos, rot, size);
            colliderCreator.Add(prefab, pos, rot, size);
        }
        meshCreator.Generate(this.transform, 150, SortFunc);

        colliderCreator.Generate(this.transform);
    }
コード例 #5
0
ファイル: ColliderCreatorEditor.cs プロジェクト: linxscc/bnyx
        public override void OnInspectorGUI()
        {
            {
                EditorGUILayout.BeginHorizontal();

                MyGUI.TextFieldWithTitle("碰撞区域名称", colliderName);
                if (MyGUI.Button("根据Renderer生成碰撞区域"))
                {
                    foreach (var item in targets)
                    {
                        ColliderCreator itriggerDelegate = item as ColliderCreator;
                        GameObject      gameObject       = itriggerDelegate.gameObject;
                        Debug.Assert(gameObject != null);

                        Bounds bounds = gameObject.GetRendererBounds();
                        bounds.center = new Vector3(bounds.center.x - gameObject.transform.position.x, bounds.center.y - gameObject.transform.position.y, bounds.center.z - gameObject.transform.position.z);

                        // 创建交互区域 add by TangJian 2018/01/02 21:26:35
                        {
                            float scale = 1f;

                            GameObject interactObject = gameObject.GetChild(colliderName, true);
                            interactObject.transform.localScale       = new Vector3(1, 1, 1) * scale;
                            interactObject.transform.localPosition    = Vector3.zero;
                            interactObject.transform.localEulerAngles = Vector3.zero;

                            interactObject.layer = LayerMask.NameToLayer("Interaction");

                            BoxCollider boxCollider = interactObject.AddComponentUnique <BoxCollider>();
                            boxCollider.isTrigger = true;

                            boxCollider.size   = bounds.size;
                            boxCollider.center = bounds.center;

                            TriggerController triggerController = interactObject.AddComponentUnique <TriggerController>();
                        }
                    }
                }

                if (MyGUI.Button("根据Collider生成碰撞区域"))
                {
                    foreach (var item in targets)
                    {
                        ColliderCreator itriggerDelegate = item as ColliderCreator;
                        GameObject      gameObject       = itriggerDelegate.gameObject;
                        Debug.Assert(gameObject != null);

                        Bounds bounds = gameObject.GetColliderBounds();
                        bounds.center = new Vector3(bounds.center.x - gameObject.transform.position.x, bounds.center.y - gameObject.transform.position.y, bounds.center.z - gameObject.transform.position.z);

                        // 创建交互区域 add by TangJian 2018/01/02 21:26:35
                        {
                            float scale = 1f;

                            GameObject interactObject = gameObject.GetChild(colliderName, true);
                            interactObject.transform.localScale       = new Vector3(1, 1, 1) * scale;
                            interactObject.transform.localPosition    = Vector3.zero;
                            interactObject.transform.localEulerAngles = Vector3.zero;

                            interactObject.layer = LayerMask.NameToLayer("Interaction");

                            BoxCollider boxCollider = interactObject.AddComponentUnique <BoxCollider>();
                            boxCollider.isTrigger = true;

                            boxCollider.size   = bounds.size;
                            boxCollider.center = bounds.center;

                            TriggerController triggerController = interactObject.AddComponentUnique <TriggerController>();
                        }
                    }
                }
                EditorGUILayout.EndHorizontal();
            }

            DrawDefaultInspector();
        }
コード例 #6
0
    }    //Update

    public void CreateVehicle()
    {
        Vector3 temp_camera_pos = Camera.main.transform.position;
        Vector3 temp_point_pos;
        float   temp_distance;

        for (var i = 0; i < vehicle_area.Count; i++)
        {
            if (Functions.HitArea(temp_camera_pos, vehicle_area[i]._position, vehicle_area[i].width + distance, vehicle_area[i].height + distance))
            {
                int temp_procent = 1;
                if (create_car)
                {//game_sc.vehicle.Count<vehicle_max&&
                    for (int j = 0; j < vehicle_area[i].point.Count; j++)
                    {
                        if (Random.Range(0, 100) < vehicle_area[i].procent / temp_procent)
                        {
                            temp_point_pos = vehicle_area[i].point[j]._position;
                            temp_distance  = Vector3.Distance(temp_point_pos, temp_camera_pos);
                            if (temp_distance > distance_min_temp && temp_distance < distance)
                            {
                                ClassPointCar temp_near_point = new ClassPointCar();
                                Quaternion    temp_rotation;

                                if (!vehicle_area[i].point[j].stop)
                                {
                                    temp_near_point = GetComponent <Patches>().point_car[vehicle_area[i].point[j].near_point[0]];
                                    temp_rotation   = Quaternion.LookRotation(temp_near_point._position - temp_point_pos);
                                }
                                else
                                {
                                    temp_rotation = Quaternion.Euler(vehicle_area[i].point[j]._rotation); temp_near_point = vehicle_area[i].point[j];
                                }

                                Transform       temp_collider = Instantiate(_collider, temp_point_pos + new Vector3(0, 2, 0), temp_rotation) as Transform;
                                int             random_man    = vehicle_area[i].man_procent[Random.Range(0, vehicle_area[i].man_procent.Count)];
                                ClassMan        temp_man_type = info_sc.man[vehicle_area[i].man[random_man]];
                                ColliderCreator temp_script   = temp_collider.GetComponent <ColliderCreator>();
                                temp_script.point      = temp_near_point;
                                temp_script.area       = vehicle_area[i];
                                temp_script.man        = temp_man_type;
                                temp_script.info_sc    = info_sc;
                                temp_script.game_sc    = game_sc;
                                temp_script.creator_sc = this;
                                vehicle.Add(temp_collider);
                            } //HitAreaOut
                        }     //procent
                    }         //for
                }             //vehicle_max
                 //MAN

                if (create_man)
                {//man_count<man_max&&
                    for (var j1 = 0; j1 < vehicle_area[i].point_man.Count; j1++)
                    {
                        ClassPointMan temp_point = vehicle_area[i].point_man[j1];
                        temp_procent = 1;
                        if (Random.Range(0, 100) < vehicle_area[i].procent / temp_procent)
                        {
                            int      random_man1    = vehicle_area[i].man_procent[Random.Range(0, vehicle_area[i].man_procent.Count)];
                            ClassMan temp_man_type1 = info_sc.man[vehicle_area[i].man[random_man1]];
                            temp_point_pos = temp_point._position;
                            temp_distance  = Vector3.Distance(temp_point_pos, temp_camera_pos);
                            if (temp_distance > distance_min_temp && temp_distance < distance)
                            {
                                /*
                                 * var temp_man : Transform=Instantiate(info_sc.man_ob[temp_man_type1.man[Random.Range(0,temp_man_type1.man.Count)]]);
                                 * temp_man.position=temp_point_pos+Vector3(Random.Range(-temp_point.distance,temp_point.distance),0,Random.Range(-temp_point.distance,temp_point.distance));
                                 * temp_man.GetComponent(sc_bot).GetThisPoint(temp_point,false);*/
                                Transform  temp_create_man = Instantiate(create_man_ob);
                                ManCreator temp_script1    = temp_create_man.GetComponent <ManCreator>();
                                temp_create_man.position = temp_point_pos + game_sc.Vector(Random.Range(-temp_point.distance, temp_point.distance), 0, Random.Range(-temp_point.distance, temp_point.distance));
                                //temp_script1.man=info_sc.man_ob[temp_man_type1.man[Random.Range(0,temp_man_type1.man.Count)]];
                                temp_script1.man        = temp_man_type1;
                                temp_script1.point      = temp_point;
                                temp_script1.info_sc    = info_sc;
                                temp_script1.game_sc    = game_sc;
                                temp_script1.game_ob    = transform;
                                temp_script1.creator_sc = this;
                                man.Add(temp_create_man);
                            } //distance
                        }     //procent
                    }         //for
                }             //man_max
            }                 //HitArea
        }                     //for

        //Functions.HitAreaOut(temp_point_pos,temp_camera_pos,distance_min,distance_min)&&Functions.HitArea(temp_point_pos,temp_camera_pos,distance,distance)
        //if(distance_min_temp!=distance_min){distance_min_temp=distance_min;}
        Invoke("CreateVehicle", cteate_timer);
    }//CreateVehicle