Esempio n. 1
0
    public void Down()
    {
        // 슬롯에 아이템이 없으면 함수종료.
        if (!slot.isSlots())
        {
            return;
        }

        // 아이템 사용시.
        if (Input.GetMouseButtonDown(1))
        {
            slot.ItemUse();
            return;
        }

        // 빈 이미지 객체를 활성화 시킨다.
        Img.gameObject.SetActive(true);

        // 빈 이미지의 사이즈를 변경한다.(해상도가 바뀔경우를 대비.)
        float Size = slot.transform.GetComponent <RectTransform>().sizeDelta.x;

        EmptyImg.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Size);
        EmptyImg.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, Size);

        // 빈 이미지의 스프라이트를 슬롯의 스프라이트로 변경한다.
        EmptyImg.sprite = slot.ItemReturn().DefaultImg;
        // 빈 이미지의 위치를 마우스위로 가져온다.
        Img.transform.position = Input.mousePosition;
        // 슬롯의 아이템 이미지를 없애준다.
        slot.UpdateInfo(true, slot.DefaultImg);
        // 슬롯의 텍스트 숫자를 없애준다.
        slot.text.text = "";
    }
Esempio n. 2
0
    // 아이템 옮기기 및 교환.
    public void ItemSwap1(SlotCtrl value, Vector3 Pos)
    {
        SlotCtrl FirstSlot = NearDisItemSlot(Pos);

        // 현재 슬롯과 옮기려는 슬롯이 같으면 함수 종료.
        if (value == FirstSlot || FirstSlot == null)
        {
            value.UpdateInfo(true, value.slot.Peek().DefaultImg);
            return;
        }

        // 가까운 슬롯이 비어있으면 옮기기.
        if (!FirstSlot.isSlots())
        {
            ItemSwap2(FirstSlot, value);
        }
        // 교환.
        else
        {
            int              Count = value.slot.Count;
            ItemCtrl         item  = value.slot.Peek();
            Stack <ItemCtrl> temp  = new Stack <ItemCtrl>();

            {
                for (int i = 0; i < Count; i++)
                {
                    temp.Push(item);
                }

                value.slot.Clear();
            }

            ItemSwap2(value, FirstSlot);

            {
                Count = temp.Count;
                item  = temp.Peek();

                for (int i = 0; i < Count; i++)
                {
                    FirstSlot.slot.Push(item);
                }

                FirstSlot.UpdateInfo(true, temp.Peek().DefaultImg);
            }
        }
    }
Esempio n. 3
0
    void Fire(SlotCtrl slot)
    {
        // 동적으로 총알을 생성하는 함수
        CreateBullet();

        reloadBulletCount[now_Weapon] -= 1;
        slot.slot.Peek().setItemCount(-1);
        weaponText.text = reloadBulletCount[now_Weapon] + " / " + bulletCount[now_Weapon];
        if (slot.slot.Peek().getItemCount() == 0 && slot.isSlots() == true)
        {
            slot.slot.Clear();
            slot.UpdateInfo(false, slot.DefaultImg);
        }
        source.PlayOneShot(soundCollection[now_Weapon], 0.9f);

        // 잠시 기다리는 루틴을 위해 코루틴 함수로 호출
        StartCoroutine(this.ShowMuzzleFlash());
    }
Esempio n. 4
0
    // 아이템!!!!!!!!!! 1: 비어있는 슬롯, 2: 안 비어있는 슬롯.
    void ItemSwap2(SlotCtrl xFirst, SlotCtrl oSecond)
    {
        int      Count = oSecond.slot.Count;
        ItemCtrl item  = oSecond.slot.Peek();

        for (int i = 0; i < Count; i++)
        {
            if (xFirst != null)
            {
                xFirst.slot.Push(item);
            }
        }

        if (xFirst != null)
        {
            xFirst.UpdateInfo(true, oSecond.ItemReturn().DefaultImg);
        }

        oSecond.slot.Clear();
        oSecond.UpdateInfo(false, oSecond.DefaultImg);
    }
Esempio n. 5
0
    void OnTriggerEnter(Collider coll)
    {
        // 충돌한 Collider가 Camchange의 CAMCHANGE(Tag값)이면 카메라 전환
        if (coll.gameObject.tag == "CAMCHANGE")
        {
            FollowCam followCam = GameObject.Find("Main Camera").GetComponent <FollowCam>();
            if (sensorCheck == false)
            {
                followCam.change = true;
                Debug.Log("체크 인");
                followCam.height = 2.5f;
                followCam.dist   = 7.0f;
                sensorCheck      = true;
            }

            //집안에 들어갈 경우 네비 체크 해제
            navagent.enabled = false;
        }

        // 충돌한 게임오브젝트의 태그값 비교
        if (coll.gameObject.tag == "BULLET")
        {
            string shot_nickname = coll.gameObject.GetComponent <BulletCtrl>().playerNickName;

            CreateBloodEffect(coll.transform.position);
            if (armour <= 0)
            {
                // 맞은 총알의 Damage를 추출해 Player HP 차감
                hp -= coll.gameObject.GetComponent <BulletCtrl>().damage;
                networkCtrl.Player_HP(-1, hp, armour, shot_nickname);
                // Image UI 항목의 fillAmount 속성을 조절해 생명 게이지 값 조절
                imgHpBar.fillAmount = (float)hp / (float)initHp;
            }
            else
            {
                // 방어력 차감
                armour -= coll.gameObject.GetComponent <BulletCtrl>().damage;
                networkCtrl.Player_HP(-1, hp, armour, shot_nickname);
                // Image UI 항목의 fillAmount 속성을 조절해 방어력 게이지 값 조절
                imgArmourBar.fillAmount = (float)armour / (float)initArmour;

                // 방어력 0일때 방탄조끼 아이템 인벤토리에서 삭제
                if (armour <= 0)
                {
                    SlotCtrl proofVest = GetItem(4);
                    proofVest.slot.Clear();
                    proofVest.UpdateInfo(false, proofVest.DefaultImg);
                }
            }
            // Image UI 항목의 fillAmount 속성을 조절해 생명 게이지 값 조절
            //imgHpBar.fillAmount = (float)hp / (float)initHp;

            //if (hp <= 0)
            //{
            //    // 마우스 잠겨 있을경우 푼다.
            //    Cursor.lockState = CursorLockMode.None;//마우스 커서 고정 해제
            //    Cursor.visible = true;//마우스 커서 보이기
            //    PlayerDie();
            //}
            // Bullet 삭제
            Destroy(coll.gameObject);
        }

        // 캐릭터 앞 트리거가 내부 벽과 충돌을 검사하는 변수
        if (coll.gameObject.tag == "House")
        {
            shotable = false;
        }

        // 충돌한 게임오브젝트의 태그값 비교
        if (coll.gameObject.tag == "ZombieAttack")
        {
            CreateBloodEffect(coll.transform.position);

            if (armour <= 0)
            {
                // 체력 차감
                hp -= 50;
                networkCtrl.Player_HP(-1, hp, armour, "Zombie");
                //Image UI 항목의 fillAmount 속성을 조절해 생명 게이지 값 조절
                imgHpBar.fillAmount = (float)hp / (float)initHp;
            }
            else if (armour > 0)
            {
                // 방어력 차감
                armour -= 50;
                networkCtrl.Player_HP(-1, hp, armour, "Zombie");
                // Image UI 항목의 fillAmount 속성을 조절해 방어력 게이지 값 조절
                imgArmourBar.fillAmount = (float)armour / (float)initArmour;

                // 방어력 0일때 방탄조끼 아이템 인벤토리에서 삭제
                if (armour <= 0)
                {
                    // GetItem(4)는 ProofVest를 받아옴
                    SlotCtrl proofVest = GetItem(4);
                    proofVest.slot.Clear();
                    proofVest.UpdateInfo(false, proofVest.DefaultImg);
                }
            }

            //if (hp <= 0)
            //{
            //    // 마우스 잠겨 있을경우 푼다.
            //    Cursor.lockState = CursorLockMode.None;//마우스 커서 고정 해제
            //    Cursor.visible = true;//마우스 커서 보이기
            //    PlayerDie();

            //}
        }

        if (coll.gameObject.tag == "DangerLine")
        {
            dangerLineIn = true;
        }

        if (coll.gameObject.tag == "Vehicle")
        {
            rideCar   = true;
            ridingCar = GameObject.Find(coll.gameObject.name).GetComponent <VehicleCtrl>();
        }
    }