示例#1
0
    /// <summary>
    /// Equips the set weapon and sets its durability. Durability is a value from 0-1.
    /// </summary>
    public void EquipWeapon(Weapon weapon, int slotIndex, float durability = 1f, bool dropWeapon = true)
    {
        if (dropWeapon && loadout[slotIndex] != null && loadout[slotIndex].weaponDropPickup != null)
        {
            PickupInteractable spawnedPickup = GameManager.Instance.SpawnPickup(
                loadout[slotIndex].weaponDropPickup,
                transform.position
                );

            if (spawnedPickup.instancePickupData is InstanceWeaponPickupData instanceWeaponPickupData)
            {
                instanceWeaponPickupData.durability = GetDurabilityPercentageOfWeapon(slotIndex);
            }
        }

        loadout[slotIndex]         = weapon;
        this.durability[slotIndex] = weapon != null?Mathf.Clamp01(durability) * weapon.durability : 0;

        if (weapon == null)
        {
            return;
        }

        currentClipSize = weapon.clipSize;
    }
示例#2
0
    public PickupInteractable SpawnPickup(Pickup pickup, Vector2 pos)
    {
        if (pickup != null)
        {
            PickupInteractable pickupInteractable = Instantiate(gameData.pickupPrefab, pos, Quaternion.identity);
            pickupInteractable.pickupData = pickup;
            pickupInteractable.SetIcon(pickup.icon, pickup.iconColor);

            return(pickupInteractable);
        }

        return(null);
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag(PICKUP_TAG))
        {
            PickupInteractable pickup = collision.GetComponent <PickupInteractable>();
            bool didPickup            = pickup.Interact(gameObject);

            if (didPickup)
            {
                GameManager.Instance.UIManager.PromptIfEmpty(1, MK.UI.TransitionPreset.ScaleIn, pickup.iconRenderer.sprite, pickup.pickupData.pickupName);
                AudioManager.PlayOneShot(
                    GameManager.Instance.AudioData.pickupAudio,
                    transform.position,
                    GameManager.Instance.AudioData.pickupAudioVolume,
                    GameManager.Instance.AudioData.audioSpatialBlend
                    );
            }
        }
    }