void WeaponSlotSetting(CWeaponHook weaponHook, SlotIdx slotIdx) { if (weaponHook == null) { return; } CWeapon weapon = weaponHook.Weapon; if (weapon == null) { return; } weaponHook.transform.parent = m_Slots[(int)slotIdx]; weaponHook.gameObject.transform.localPosition = weapon.Prefab.transform.localPosition; weaponHook.gameObject.transform.localRotation = weapon.Prefab.transform.localRotation; weaponHook.gameObject.transform.localScale = weapon.Prefab.transform.localScale; }
IEnumerator ChangeMainSubCoroutine() { CWeapon tempWeapon = m_mainEquip; m_mainEquip = m_subEquip; m_subEquip = tempWeapon; CWeaponHook tempHook = MainHook; m_MainHook = SubHook; m_subHook = tempHook; m_actionCtrl.Anim.SetInteger("WeaponIdx", (int)m_mainEquip.WeaponType); yield return(new WaitForSeconds(0.5f)); WeaponSlotSetting(m_MainHook, SlotIdx.Right); WeaponSlotSetting(m_subHook, m_subHook.Weapon.WaitSlot); yield return(null); }
public CWeapon EquipWeapon(CWeapon weapon, SlotIdx slotIdx = SlotIdx.Right, bool isSub = false) { CWeapon outWeapon = null; #region CheckNull if (weapon == null) { Debug.LogError("Don't Equip null Weapon"); return(outWeapon); } GameObject weaponObj = Instantiate(weapon.Prefab); if (weaponObj == null) { Debug.LogError(weapon + ".prefab is null"); return(outWeapon); } weaponObj.name = weapon.Prefab.name; CWeaponHook weaponHook = weaponObj.GetComponent <CWeaponHook>(); if (weaponHook == null) { Debug.LogError(weapon + "is not Contained WeaponHook"); return(outWeapon); } #endregion if (!isSub) { if (m_MainHook != null) { outWeapon = m_MainHook.Weapon; Destroy(m_MainHook.gameObject); m_mainEquip = null; m_MainHook = null; } m_MainHook = weaponHook; m_MainHook.Init(m_unit, weapon); m_mainEquip = weapon; m_inventoryInfo.curWeaponIdx = m_mainEquip.ItemIdx; } else { if (m_subHook != null) { outWeapon = m_subHook.Weapon; Destroy(m_subHook.gameObject); m_subHook = null; m_subEquip = null; } m_subHook = weaponHook; m_subHook.Init(m_unit, weapon); m_subEquip = weapon; m_inventoryInfo.subWeaponIdx = m_subEquip.ItemIdx; } WeaponSlotSetting(weaponHook, slotIdx); if (m_actionCtrl.Anim != null) { m_actionCtrl.Anim.SetInteger("WeaponIdx", (int)m_mainEquip.WeaponType); } //TODO: 방패 혹은 오브젝트를 두개를 껴야하는 경우의 관련 처리 return(outWeapon); }