Ejemplo n.º 1
0
 public void turnBlueEffects()
 {
     battery = this.gameObject.GetComponent <MapsBattery>();
     //改变碰撞体范围
     //CircleCollider2D cc = this.gameObject.GetComponent<CircleCollider2D>();
     //cc.radius = battery.getBatteryData().cureDistance;
 }
Ejemplo n.º 2
0
 public float getAttackValue(GameObject gameObject)
 {
     battery = this.gameObject.GetComponent <MapsBattery>();
     //Debug.LogWarning(battery.getBatteryData().cureVal);
     return(battery.getBatteryData().cureVal);
 }
    // Update is called once per frame
    void Update()
    {
        //倒计数后开始一切操作
        curTime = Time.time;
        if (curTime - lastTime >= 8)
        {
            //鼠标在UI上不做处理
            if (Input.GetMouseButtonDown(0))
            {
                //true即鼠标在UI上
                if (EventSystem.current.IsPointerOverGameObject() == false)
                {
                    Vector3 mousePos = Input.mousePosition;
                    mousePos.z = 10;
                    Vector3 screenPos = Camera.main.ScreenToWorldPoint(mousePos);
                    //RaycastHit2D hit = Physics2D.Raycast(screenPos, Vector2.zero, 1 << (LayerMask.NameToLayer("Maps")));
                    //Collider2D[] col = Physics2D.OverlapPointAll(screenPos);
                    GameObject mapsCreater = GameObject.Find("mapCreater");
                    GameObject target      = mapsCreater.GetComponent <mapCreater>().getPointingMap(screenPos.x, screenPos.y);

                    if (target != null)
                    {
                        MapsBattery battery = target.GetComponent <MapsBattery>();
                        int         status  = target.GetComponent <Base_command>().status;
                        if (battery.BatteryOnMaps == null && status == 1) //医院建立在绿色地皮上,其他炮台
                        {
                            //map空即能进行建造
                            //判断资源知否足以创建炮台
                            //不同地形额外cost不一样需要加上
                            int cost         = BatterySelectedData.cost + target.GetComponent <Base_command>().terrainData.extraCost;
                            int costWater    = BatterySelectedData.costWater + target.GetComponent <Base_command>().terrainData.extraWaterCost;
                            int costElectric = BatterySelectedData.costElectric + target.GetComponent <Base_command>().terrainData.extraElectricCost;
                            if (money >= cost && water >= costWater && electric >= costElectric)
                            {
                                ChangeMoney(-cost, -costWater, -costElectric);
                                battery.BuildBattery(BatterySelectedData.batteryPrefab, BatterySelectedData);
                                target.GetComponent <Base_command>().status  = 3;
                                target.GetComponent <blue_command>().enabled = true;
                                target.GetComponent <blue_command>().turnBlueEffects();
                            }
                            else
                            {
                                if (money < cost)
                                {
                                    moneyAnimator.SetTrigger("NoMoney");
                                }
                                if (water < costWater)
                                {
                                    waterAnimator.SetTrigger("NoMoney");
                                }
                                if (electric < costElectric)
                                {
                                    electricAnimator.SetTrigger("NoMoney");
                                }
                            }
                        }
                        else
                        {
                            //TODO
                        }
                    }
                    else
                    {
                    }
                }
                else
                {
                }
            }
            n = GreenNumber.numGreen;
            //根据绿块数量改变资源增长

            /*
             *  6.15
             *  加上*SpeedControllor.gameSpeed,即游戏速度的影响
             */
            if (GreenNumber.numGreen > 0)
            {
                incMoney += 0.05f * Mathf.Exp(GreenNumber.numGreen / 10000) * SpeedControllor.gameSpeed;
                //incMoney += (0.05f / (10 * Mathf.Exp(GreenNumber.numGreen / 1000000000))) * SpeedControllor.gameSpeed;
                //print("incMoney " + incMoney);
                if (incMoney > 1)
                {
                    ChangeMoney((int)incMoney, 0, 0);
                    incMoney = 0;
                }
            }
            if (GreenNumber.numWater > 0)
            {
                incWater += 0.05f * Mathf.Exp(GreenNumber.numWater / 10000) * SpeedControllor.gameSpeed;
                //incWater += (0.05f / (10 * Mathf.Exp(GreenNumber.numWater / 1000000000))) * SpeedControllor.gameSpeed;
                //print("incWater " + incWater);
                if (incWater > 1)
                {
                    ChangeMoney(0, (int)incWater, 0);
                    incWater = 0;
                }
            }
            if (GreenNumber.numElectric > 0)
            {
                incElectric += 0.05f * Mathf.Exp(GreenNumber.numElectric / 10000) * SpeedControllor.gameSpeed;
                //incElectric += (0.05f / (10 * Mathf.Exp(GreenNumber.numElectric / 1000000000))) * SpeedControllor.gameSpeed;
                //print("incElectric " + incElectric);
                if (incElectric > 1)
                {
                    ChangeMoney(0, 0, (int)incElectric);
                    incElectric = 0;
                }
            }
        }
    }
Ejemplo n.º 4
0
    public void OnEndDrag(PointerEventData eventData)
    {
        Debug.Log("DragEnd:" + eventData.position);

        Vector3 touchInWordPos;

        touchInWordPos   = Camera.main.ScreenToWorldPoint(eventData.position);
        touchInWordPos.z = -15.0f;
        Debug.Log("touchInWordPos:" + touchInWordPos);
        Ray ray = new Ray(touchInWordPos, new Vector3(0.0f, 0.0f, 1.0f));

        Debug.DrawRay(touchInWordPos, new Vector3(0.0f, 0.0f, 1.0f), Color.green, 10.0f);
        RaycastHit2D hit = Physics2D.Raycast(touchInWordPos, Vector2.zero, 1000f, 1 << LayerMask.NameToLayer("Maps"));

        Debug.Log("FLAG:" + hit);
        if (hit)
        {
            //在这里通过hit得到的transform及对应gameObject拥有的属性判断是否可以建设
            Debug.Log("raycastHitTransForm:" + hit.transform.gameObject);
            Debug.Log("currentBuilding:" + transform.gameObject.name);

            GameObject     mapsCreater    = GameObject.Find("mapCreater");
            GameObject     gameManager    = GameObject.Find("GameManager");
            BatteryManager batteryManager = gameManager.GetComponent <BatteryManager>();
            Debug.Log("BatteryManager:" + batteryManager);
            GameObject target = mapsCreater.GetComponent <mapCreater>().getPointingMap(touchInWordPos.x, touchInWordPos.y);
            Debug.Log("target:" + target);
            if (target != null)
            {
                MapsBattery battery = target.GetComponent <MapsBattery>();
                int         status  = target.GetComponent <Base_command>().status;
                if (battery.BatteryOnMaps == null && status == 1) //医院建立在绿色地皮上,其他炮台
                {
                    //map空即能进行建造
                    //判断资源知否足以创建炮台
                    //不同地形额外cost不一样需要加上
                    Debug.Log("cost:" + BatterySelectedData.cost);
                    Debug.Log("batteryManager.money:" + batteryManager.money);
                    int cost         = BatterySelectedData.cost + target.GetComponent <Base_command>().terrainData.extraCost;
                    int costWater    = BatterySelectedData.costWater + target.GetComponent <Base_command>().terrainData.extraWaterCost;
                    int costElectric = BatterySelectedData.costElectric + target.GetComponent <Base_command>().terrainData.extraElectricCost;
                    if (batteryManager.money >= cost && batteryManager.water >= costWater && batteryManager.electric >= costElectric)
                    {
                        batteryManager.ChangeMoney(-cost, -costWater, -costElectric);
                        battery.BuildBattery(BatterySelectedData.batteryPrefab, BatterySelectedData);
                        target.GetComponent <Base_command>().status  = 3;
                        target.GetComponent <blue_command>().enabled = true;
                        target.GetComponent <blue_command>().turnBlueEffects();
                    }
                    else
                    {
                        if (batteryManager.money < cost)
                        {
                            batteryManager.moneyAnimator.SetTrigger("NoMoney");
                        }
                        if (batteryManager.water < costWater)
                        {
                            batteryManager.waterAnimator.SetTrigger("NoMoney");
                        }
                        if (batteryManager.electric < costElectric)
                        {
                            batteryManager.electricAnimator.SetTrigger("NoMoney");
                        }
                    }
                }
            }
            if (hit.transform.name.Equals("Maps(Clone)"))
            {
                Debug.Log("DragEndRayCast:" + hit.transform.name);
                Debug.Log("被碰撞的物体是:" + hit.collider.gameObject.name);
            }
        }
        Debug.Log("originPos:" + originPos);
        transform.localPosition = originPos;
    }