コード例 #1
0
        private void SpawnDualWieldItem(WeaponItemRanged_DualWielded item)
        {
            //Spawn Right Hand Weapon
            GameObject rightHandGeo = Instantiate(item.weaponPrefab, playerRightHand);

            rightHandGeo.transform.localPosition = Vector3.zero;
            rightHandGeo.transform.localRotation = Quaternion.identity;
            WeaponItemRuntimeRanged rightHandRangedComponent = rightHandGeo.GetComponent <WeaponItemRuntimeRanged>();

            rightHandRangedComponent.FreshSpawnWeapon();
            rightHandRangedComponent.PickupWeaponPlayer();
            rightHandRangedComponent.Init();
            rightHandGeo.SetActive(false);

            //Spawn Left Hand Weapon
            GameObject leftHandGeo = Instantiate(item.weaponPrefab, playerLeftHand);

            leftHandGeo.transform.localPosition = Vector3.zero;
            leftHandGeo.transform.localRotation = Quaternion.identity;
            WeaponItemRuntimeRanged leftHandRangedComponent = leftHandGeo.GetComponent <WeaponItemRuntimeRanged>();

            leftHandRangedComponent.FreshSpawnWeapon();
            leftHandRangedComponent.PickupWeaponPlayer();
            leftHandRangedComponent.Init();
            leftHandRangedComponent.pivot.localPosition = leftHandRangedComponent.rangedData.leftHandPivotPosition;
            leftHandRangedComponent.pivot.localRotation = Quaternion.Euler(leftHandRangedComponent.rangedData.leftHandPivotRotation);
            leftHandGeo.SetActive(false);

            //Setup Dual Wield Component
            WeaponItemRuntimeRangedDualWielded dualWieldComponent = leftHandGeo.AddComponent <WeaponItemRuntimeRangedDualWielded>();
            WeaponItemRanged_DualWielded       dualData           = leftHandRangedComponent.rangedData.dualWieldParentData;

            dualWieldComponent.SetupDualWield(dualData, leftHandRangedComponent, rightHandRangedComponent);
            inventoryWeapons.Add(dualWieldComponent);
        }
コード例 #2
0
        private void SetupDualWieldItem(WeaponItemRuntime item)
        {
            //Place Weapon In Left Hand
            item.transform.SetParent(playerLeftHand);
            item.transform.localPosition = Vector3.zero;
            item.transform.localRotation = Quaternion.identity;

            //Get Ranged Component To Setup Left Hand Pivot
            WeaponItemRuntimeRanged leftHandRangedComponent = item as WeaponItemRuntimeRanged;

            leftHandRangedComponent.pivot.localPosition = leftHandRangedComponent.rangedData.leftHandPivotPosition;
            leftHandRangedComponent.pivot.localRotation = Quaternion.Euler(leftHandRangedComponent.rangedData.leftHandPivotRotation);
            leftHandRangedComponent.PickupWeaponPlayer();

            WeaponItemRuntimeRanged rightHandRangedComponent = inventoryWeapons[currentWeaponInList] as WeaponItemRuntimeRanged;


            //Add Dual Wield Component To It
            WeaponItemRuntimeRangedDualWielded dualWieldComponent = item.gameObject.AddComponent <WeaponItemRuntimeRangedDualWielded>();
            WeaponItemRanged_DualWielded       dualData           = leftHandRangedComponent.rangedData.dualWieldParentData;

            dualWieldComponent.SetupDualWield(dualData, leftHandRangedComponent, rightHandRangedComponent);

            //Swap Inventory To The Dual Wield Component
            inventoryWeapons[currentWeaponInList] = dualWieldComponent;
            currentWeaponItem        = dualData;
            currentWeaponItemRuntime = dualWieldComponent;
            weaponController.OnWeaponEquipped(currentWeaponItemRuntime);
        }
コード例 #3
0
        void SpawnFreshWeapon(WeaponItem item)
        {
            WeaponItemRanged_DualWielded dualItem = item as WeaponItemRanged_DualWielded;

            if (dualItem != null)
            {
                SpawnDualWieldItem(dualItem);
                return;
            }

            GameObject weaponGeo = Instantiate(item.weaponPrefab, playerRightHand);

            weaponGeo.transform.localPosition = Vector3.zero;
            weaponGeo.transform.localRotation = Quaternion.identity;
            weaponGeo.SetActive(false);

            WeaponItemRuntime runtimeComponent = weaponGeo.GetComponent <WeaponItemRuntime>();

            runtimeComponent.FreshSpawnWeapon();
            runtimeComponent.PickupWeaponPlayer();
            runtimeComponent.Init();
            inventoryWeapons.Add(runtimeComponent);
        }