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 = ""; }
// 아이템 옮기기 및 교환. 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); } } }
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()); }
// 아이템!!!!!!!!!! 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); }
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>(); } }