예제 #1
0
    void GetQuestAward(GameObject go)
    {
        Transform Board      = go.transform.parent.parent;
        Transform root       = Board.parent;
        Transform MoneyBoard = transform.Find("/ToolsKit/Canvas/PlayerInfo/glodBoard");
        Transform mineBoard  = transform.Find("/ToolsKit/Canvas/PlayerInfo/mineBoard");
        //Award
        Transform awardGold  = Board.transform.Find("QuestBoard/award/Gold");
        Transform awardExp   = Board.transform.Find("QuestBoard/award/Exp");
        Transform AwardGoods = Board.transform.Find("QuestBoard/award/Goods");

        QuestManager.QuestBase info = questManager.GetQuestInfoByID(int.Parse(Board.name));

        //增加奖励
        PlayerInfo.ChangeMoney(info.Award.Gold);
        for (int i = 0; i < info.Award.GoodsNum; i++)
        {
            CharBag.AddGoodsByID(info.Award.Goods[0], info.Award.Goods[1]);
        }

        //完成任务
        PlayerInfo.AddCompleteQuest(info.ID);
        questManager.RemoveQuestToList(info.ID);
        //销毁任务面板的任务
        Transform questbutton = QuestListUI.transform.Find(info.ID.ToString());

        if (questbutton != null)
        {
            Destroy(questbutton.gameObject);
        }

        //生成金币
        for (int i = 0; i < info.Award.Gold; i = i + 50)
        {
            Transform gold = Instantiate(awardGold, root);
            gold.position = awardGold.position;
            float randomrange = 100f;
            float time        = 0.5f;
            LeanTween.moveY(gold.gameObject, gold.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);
            LeanTween.moveX(gold.gameObject, gold.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);

            LeanTween.moveX(gold.gameObject, MoneyBoard.position.x, time).setDelay(time * Random.Range(1.5f, 2f));
            LeanTween.moveY(gold.gameObject, MoneyBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete(
                () =>
            {
                Destroy(gold.gameObject);
            });
            if (i > 500)
            {
                break;
            }
        }

        //生成经验
        for (int i = 0; i < info.Award.Exp; i = i + 50)
        {
            Transform exp = Instantiate(awardExp, root);
            exp.position = awardExp.position;
            float randomrange = 100f;
            float time        = 0.5f;
            LeanTween.moveY(exp.gameObject, exp.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);
            LeanTween.moveX(exp.gameObject, exp.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);

            LeanTween.moveX(exp.gameObject, mineBoard.position.x, time).setDelay(time * Random.Range(1.5f, 2f));
            LeanTween.moveY(exp.gameObject, mineBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete(
                () =>
            {
                Destroy(exp.gameObject);
            });

            if (i > 500)
            {
                break;
            }
        }

        //生成物品
        for (int i = 0; i < info.Award.GoodsNum; i++)
        {
            Transform goods = Instantiate(AwardGoods, root);
            goods.position = AwardGoods.position;
            float randomrange = 100f;
            float time        = 0.5f;
            LeanTween.moveY(goods.gameObject, AwardGoods.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);
            LeanTween.moveX(goods.gameObject, AwardGoods.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);

            LeanTween.moveX(goods.gameObject, mineBoard.position.x + 100, time).setDelay(time * Random.Range(1.5f, 2f));
            LeanTween.moveY(goods.gameObject, mineBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete(
                () =>
            {
                Destroy(goods.gameObject);
            });

            if (i > 10)
            {
                break;
            }
        }

        LeanTween.moveLocalY(go.transform.parent.gameObject, Screen.height / 2 + 200, 0.3f).setEaseInBack().setOnComplete(() =>
        {
            Destroy(Board.gameObject);

            //添加完成的事件
            if (info.Award.Event != 0)
            {
                eventmanager.AddStroyWithEventID(info.Award.Event);
            }

            if (!questManager.IsArriveWaitingCheckPoint(0))
            {
                eventmanager.StartStory();
            }
        });

        //延迟更新显示
        LeanTween.delayedCall(0.5f * 2f, () => {
            PlayerInfo.Info playerInfo = PlayerInfo.GetPlayerInfo();
            MoneyBoard.Find("Text").GetComponent <Text>().text = playerInfo.Money.ToString();
        });
    }