Exemple #1
0
    // 상자를 여는 메소드
    public void OpenChest()
    {
        // 상자가 닫힌 상태이면
        if (bIsOpened == false)
        {
            // 상자를 열린 상태로 변경
            bIsOpened = true;

            // 뚜껑에 물리 효과를 주어 날려버리고 중력을 사용하도록 함
            Rigidbody rigid = objChestCover.GetComponent <Rigidbody>();
            rigid.useGravity  = true;
            rigid.isKinematic = false;
            rigid.AddForce(new Vector3(0.0f, 100.0f, -200.0f));

            // 보상 종류에 따른 선처리
            float  fRandomAmount            = 0.0f;                                                             // 획득될 자원의 양
            string resPathStr               = "Prefabs/Items/Res_GoldCoin";                                     // 프리펩 경로
            ItemResource.ItemType enResType = ItemResource.ItemType.ITEM_GOLD;                                  // 아이템 종류
            GameObject            bonusGrp  = GameObject.Find("Stage").transform.FindChild("Bonus").gameObject; // 아이템이 보관될 그룹 오브젝트

            // 드롭되는 아이템(자원) 종류 설정
            if (enDrop == DropObject.DROP_GOLD)
            {
                enResType = ItemResource.ItemType.ITEM_GOLD;
            }
            else if (enDrop == DropObject.DROP_RUNE)
            {
                enResType = ItemResource.ItemType.ITEM_RUNE;
            }
            else if (enDrop == DropObject.DROP_BOTH_RANDOM)
            {
                // 50% 이상의 확률로 금화 생성
                if (Random.Range(0.0f, 1.0f) >= 0.5f)
                {
                    enResType = ItemResource.ItemType.ITEM_GOLD;
                }
                else
                {
                    enResType = ItemResource.ItemType.ITEM_RUNE;
                }
            }

            // 종류에 따른 경로명과 범위내 무작위 획득량 지정
            if (enResType == ItemResource.ItemType.ITEM_GOLD)
            {
                resPathStr    = "Prefabs/Items/Res_GoldCoin";
                fRandomAmount = Random.Range(iGoldMin, iGoldMax);
            }
            else if (enResType == ItemResource.ItemType.ITEM_RUNE)
            {
                resPathStr    = "Prefabs/Items/Res_RuneStone";
                fRandomAmount = Random.Range(iRuneMin, iRuneMax);
            }

            // 보상 생성 및 보상 속성 설정
            GameObject resItem = Object.Instantiate(Resources.Load(resPathStr) as Object, this.transform.position, Quaternion.identity) as GameObject;
            resItem.transform.parent = bonusGrp.transform;

            ItemResource resVar = resItem.GetComponent <ItemResource>();
            resVar.SetValueOfItem(enResType, (int)fRandomAmount, 0);
        }
    }