Exemple #1
0
    public void DropGoldAndItems()
    {
        if (!alreadyDropObjects)
        {
            alreadyDropObjects = true;
            //-----------------------------------골드 드랍-----------------------------------
            DroppedGoldOrCrystal gold = Instantiate(DropGoldObject).GetComponent <DroppedGoldOrCrystal>();

            int mDropGold = myMonsterInfo.monsterDropGoldAmount;
            gold.GoldAmount = Random.Range((int)(mDropGold * 0.7), (int)(mDropGold * 1.2));                      // (몬스터 골드량의 70%) ~ (몬스터의 골드량 120%)을 전달 함.
            gold.name       = myMonsterInfo.monsterName + " 드롭 골드량:" + gold;

            int ranX = Random.Range(-100, 101);                                     //min ~ max-1
            int ranY = Random.Range(100, 201);                                      //min ~ max-1
            gold.transform.position = GetComponent <Transform>().position;
            gold.GetComponent <Rigidbody2D>().AddForce(new Vector3(ranX, ranY, 0)); //위 방향으로 랜덤 발사

            //-------------------------보스일 때 확률적으로 아이템 드랍 & 크리스탈 드랍-------------------------
            if (myMonsterInfo.isBoss)
            {
                if (Random.Range(0, 101) /*0~100*/ <= myMonsterInfo.monsterDropRate)
                {
                    DropItem();
                }
                if (Random.Range(0, 101) <= 30)    //30% 확률
                {
                }
            }
        }
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Monster")
        {
            FindObjectOfType <SoundManager>().Play("default_hurt");
            FindObjectOfType <ParticleSupplier>().SetParticle(transform.position, "player_hit");

            GameObject obj = collision.gameObject;
            OnDamaged(obj.transform.position, obj.GetComponent <MonsterParent>().myMonsterInfo.monsterDamage); //해당 몬스터의 파워가 여기 들어가야함.
            OnDamaged(obj.transform.position, 0);                                                              //해당 몬스터의 파워가 여기 들어가야함.
        }
        if (collision.gameObject.tag == "DropGold")                                                            //Gold Or Crystal
        {
            FindObjectOfType <SoundManager>().Play("default_getCapital");

            DroppedGoldOrCrystal dropGOC = collision.gameObject.GetComponent <DroppedGoldOrCrystal>();
            if (!dropGOC.isGet)
            {
                //Capital(자본을 관리하는 은행)에 돈을 넣는다.
                dropGOC.GetMoneyOrCrystal();
                if (!dropGOC.isCrystal)
                {
                    GetComponent <Capital>().PlusMoney(dropGOC.GoldAmount);
                }
                else
                {
                    GetComponent <Capital>().PlusCrystal(dropGOC.GoldAmount / 10);   //100골드 = 10크리스탈..
                }
            }
        }
        if (collision.gameObject.tag == "Item")
        {
            FindObjectOfType <SoundManager>().Play("default_getItem");

            //아이템 획득 후 처리
            DroppedItem dropIS = collision.gameObject.GetComponent <DroppedItem>();
            dropIS.GetItem();
            changer.UnlockCode(dropIS.dropItemCode);
            //NoticeTextUI 에게 알려야함.
            //아이템 먹었다고 자랑해야함
            NoticeTextUI noticeUI = GameObject.Find("NoticeTextBackground").transform.GetChild(0).GetComponent <NoticeTextUI>();
            noticeUI.ItemEat("야매로 만듬.여기에 획득 아이템잉름 들어가야함");
        }
    }