Пример #1
0
    void Update()
    {
        if (MeteorsActive == true)
        {
            if (_meteorConroller != null)
            {
                List <GameObject> meteorList = _meteorConroller.GetObjectList();

                foreach (var meteor in meteorList)
                {
                    if (meteor.gameObject.activeSelf == true)
                    {
                        Vector3 eVec = meteor.transform.position;

                        //cities
                        MeteorSpriteObj meteorScript = meteor.GetComponent <MeteorSpriteObj> ();
                        float           eRad         = meteorScript.CircleCollider.radius;

                        if (meteorScript.ExplodePhase == true)
                        {
                            List <City> cityList = _cityController.GetCityList();
                            foreach (var city in cityList)
                            {
                                City c = city.GetComponent <City> ();

                                if (c.CheckCircleCollision(eVec, eRad))
                                {
                                    Debug.Log("City Hit");

                                    //apply damage
                                    c.ApplyDamage(meteorScript.Power);
                                }
                            }
                        }

                        //bullets

                        List <GameObject> canonList = _canonController.GetObjectList();
                        foreach (var canonBall in canonList)
                        {
                            SpriteCanonObject ball = canonBall.GetComponent <SpriteCanonObject> ();

                            if (ball._State == SpriteCanonObject.eState.Exploding)
                            {
                                if (ball.CheckCircleCollision(eVec, eRad))
                                {
                                    //apply damage to meteor

                                    meteorScript.ApplyDamage(1);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Пример #2
0
    private void InsertMeteor()
    {
        Vector3 position = StartPosition.transform.position;

        float rx = (float)Random.Range(-(StartAreaX / 3), StartAreaX / 3);
        float ry = (float)Random.Range(-(StartAreaY / 3), StartAreaY / 3);

        float rz = 0f;

        if (ZLevels != null)
        {
            int len   = ZLevels.Length;
            int index = (int)Random.Range(0, len);
            rz = ZLevels[index];
        }


        GameObject go = null;

        objectPool.TryGetNextObject(new Vector3(position.x + rx, position.y + ry, rz), new Quaternion(), out go);

        //Debug.Log ("scaleX = " + scale.x.ToString() + "  scaleY = " + scale.y.ToString() + "  rx = " + rx + "  ry = " + ry);

        if (go != null)
        {
            MeteorSpriteObj objectScript = go.GetComponent <MeteorSpriteObj> ();

            float speedRange = (float)Random.Range(-SpeedRange, SpeedRange);
            float speed      = WindSpeed + speedRange;

            float ex = EndPosition.transform.position.x;
            float ey = EndPosition.transform.position.y;

            float offsetx = (float)Random.Range(-(EndAreaX / 3f), EndAreaX / 3f);
            float offsety = (float)Random.Range(-(EndAreaY / 3f), EndAreaY / 3f);

            objectScript.StartColor   = StartColor;
            objectScript.TravelColor  = TravelColor;
            objectScript.ExplodeColor = ExplodeColor;

            objectScript.StartAnim(ex + offsetx, ey + offsety, rz, speed);


            //float endPointX = ex + offsetx;
            //float endPointY = ey + offsety;
            //Debug.Log ("offsetx = " + offsetx + "  offsety = " + offsety + "  endPointX = " + endPointX + "  endPointY = " + endPointY);
        }
    }