示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (StartMenu.activeInHierarchy)
        {
            Time.timeScale = 0f;

            Cursor.lockState = CursorLockMode.None;
            Cursor.visible   = true;

            WeaponPickup wp = FindObjectOfType <WeaponPickup> ();
            if (wp != null)
            {
                wp.SetAlive(false);
            }

            SwitchWeapon sw = GameObject.Find("Camera").GetComponent <SwitchWeapon> ();
            if (sw != null)
            {
                sw.SetAlive(false);
            }

            MouseLook ml = FindObjectOfType <MouseLook> ();
            if (ml != null)
            {
                ml.SetAlive(false);
            }

            player.GetComponent <MouseLook> ().enabled = false;
        }
    }
 private void OnTriggerExit(Collider other)
 {
     if (other.tag == "WeaponDrop")
     {
         currentPickup = null;
     }
 }
示例#3
0
 public SavedPickup(Pickup pickup)
 {
     tilePos = new SavedTilePos(pickup.position);
     if (pickup is ResourcePickup)
     {
         ResourcePickup resourcePickup = pickup as ResourcePickup;
         pickupType  = 0;
         index       = resourcePickup.info.ToIndex();
         stackHeight = pickup.gameObjects.Count;
     }
     else if (pickup is WeaponPickup)
     {
         WeaponPickup weaponPickup = pickup as WeaponPickup;
         pickupType  = 1;
         index       = weaponPickup.info.ToIndex();
         stackHeight = 1;
     }
     else if (pickup is AugmentPickup)
     {
         AugmentPickup augmentPickup = pickup as AugmentPickup;
         pickupType  = 2;
         index       = augmentPickup.info.ToIndex();
         stackHeight = 1;
     }
     else
     {
         Debug.LogError("Unrecognized pickup type");
         pickupType  = -1;
         index       = -1;
         stackHeight = -1;
     }
 }
示例#4
0
文件: Ammo.cs 项目: kaghi123/FPS-code
    // Update is called once per frame
    void Update()
    {
        WeaponPickup wp = FindObjectOfType <WeaponPickup> ();

        if (wp != null)
        {
            alive = wp.GetAlive();
        }
        if (alive)
        {
            if (Input.GetMouseButtonDown(0))
            {
                if (weapon1pictext.activeInHierarchy && sammo > 0)
                {
                    sammo--;
                    weapon1pictext.GetComponent <UnityEngine.UI.Text> ().text = sammo.ToString();
                }
                else if (weapon2pictext.activeInHierarchy && lammo > 0)
                {
                    lammo--;
                    weapon2pictext.GetComponent <UnityEngine.UI.Text> ().text = lammo.ToString();
                }
            }
        }
    }
示例#5
0
    void OnTriggerEnter(Collider other)
    {
        ammoBox.SetActive(false);

        Ammo a = FindObjectOfType <Ammo> ();

        if (a != null)
        {
            lammo = a.getLammo();
            sammo = a.getSammo();
        }

        WeaponPickup wp = FindObjectOfType <WeaponPickup> ();

        if (wp != null)
        {
            string name = wp.getPlayerWeapon();

            if (name.Contains("Handgun"))
            {
                a.setSammo(sammo + ammo);
            }
            else
            {
                a.setLammo(lammo + ammo);
            }
        }
    }
示例#6
0
    void OnDrawGizmos()
    {
        if (GAMERUNNING && interactables.Count > 0)
        {
            // draw a line to all weapons
            foreach (Interactable interactable in interactables)
            {
                if (interactable == null)
                {
                    continue;
                }

                WeaponPickup weapon = interactable.GetComponent <WeaponPickup>();

                if (weapon)
                {
                    // set the line color to red
                    Gizmos.color = Color.red;

                    float dist = Mathf.Abs((transform.parent.position - interactable.transform.position).magnitude);

                    // set the line color to green for weapons in reach
                    if (dist <= weapon.pickupRadius)
                    {
                        Gizmos.color = Color.green;
                    }
                }

                Gizmos.DrawLine(transform.parent.position, interactable.transform.position);
            }
        }
    }
示例#7
0
    public WeaponPickup SpawnWeapon(Vector3 position, WeaponInfo info, Island island)
    {
        Vector2 posV2 = PosToV2(position);

        if (island == null || GetBuildingAtPosition(posV2) != null || GetPickupAtPosition(posV2) != null)
        {
            return(null);
        }

        if (!Crafting.instance.weaponInfos.Contains(info))
        {
            Debug.LogError("Weapon info not found in list");
            return(null);
        }

        GameObject weaponGO = Instantiate(info.pickupPrefab, island.transform);

        weaponGO.transform.position = position;
        WeaponPickup weapon = new WeaponPickup(info, weaponGO, island);

        pickups.Add(posV2, weapon);
        island.pickups.Add(weapon);

        SavedGame.UpdatePickups();
        return(weapon);
    }
    public void Enter(AIAgent agent)
    {
        WeaponPickup pickup = FindClosestWeapon(agent);

        agent.navMeshAgent.destination = pickup.transform.position;
        agent.navMeshAgent.speed       = 5;
    }
    // Assign old active weapon to weapon loot on floor.
    void EquipWeapon(WeaponPickup weaponOnFloor)
    {
        SO_Weapon weapToDrop            = charEquippedWeapons.activeWeapon;
        float     weapOnFloorDurability = weaponOnFloor.durability;

        if (charEquippedWeapons.inactiveWeapon == null)
        {
            charEquippedWeapons.inactiveWeapon = charEquippedWeapons.activeWeapon;
            charEquippedWeapons.activeWeapon   = weaponOnFloor.weaponBase;
            charEquippedWeapons.WeaponSwap(true);
            charEquippedWeapons.SetActiveWeaponDurability(weapOnFloorDurability);
            weaponOnFloor.TurnOff();
        }
        else
        {
            weaponOnFloor.durability         = charEquippedWeapons.GetActiveWeaponDurability();
            charEquippedWeapons.activeWeapon = weaponOnFloor.weaponBase;
            weaponOnFloor.weaponBase         = weapToDrop;
            weaponOnFloor.SwapWeaponLoot(weapToDrop);
            charEquippedWeapons.WeaponSwap(false);
            charEquippedWeapons.SetActiveWeaponDurability(weapOnFloorDurability);
        }
        // Change the HUD image of the active weapon.
        HUDManager.playerWeapons.PickUpWeapon(charEquippedWeapons.activeWeapon.weaponSprite, weapOnFloorDurability);
        Debug.Log("Dropped weapon: " + weapToDrop + " and equipped: " + charEquippedWeapons.activeWeapon);
    }
示例#10
0
 public void OnTriggerEnter(Collider collider)
 {
     if (collider.tag == "Pickup")
     {
         activePickup = collider.GetComponent <WeaponPickup>();
     }
 }
    private void OnTriggerEnter(Collider other)
    {
        print(other.gameObject.tag);

        switch (other.gameObject.tag)
        {
        case "Weapon Pickup":
            WeaponPickup weaponPickup = other.gameObject.GetComponent <WeaponPickup>();
            switch (weaponPickup.type)
            {
            case WeaponType.MachineGun:
                PlayerWeaponManager.instance.FindWeapon("Machine Gun").ammo += 75;
                UIManager.instance.UpdateWeaponAmmoText(PlayerWeaponManager.instance.FindWeapon("Machine Gun").ammo);
                break;

            case WeaponType.TripleGun:
                PlayerWeaponManager.instance.FindWeapon("Triple Gun").ammo += 90;
                UIManager.instance.UpdateWeaponAmmoText(PlayerWeaponManager.instance.FindWeapon("Triple Gun").ammo);
                break;
            }

            AudioManager.instance.Play("Weapon Pickup Collected");

            Destroy(other.gameObject);
            break;
        }
    }
示例#12
0
    protected override void SpawnItem()
    {
        WeaponPickup weaponToSpawn = null;

        foreach (Interactable weapon in itemPool)
        {
            if (!weapon.gameObject.activeInHierarchy)
            {
                weaponToSpawn = weapon.GetComponent <WeaponPickup>();
                break;
            }
        }

        if (weaponToSpawn)
        {
            weaponToSpawn.gameObject.SetActive(true);
            weaponToSpawn.MakeAvailable();
            weaponToSpawn.transform.position   = transform.position + itemOffset;
            weaponToSpawn.transform.rotation   = Quaternion.identity;
            weaponToSpawn.transform.localScale = Vector3.one;
            hasItem = true;
        }
        else
        {
            hasItem = false;
        }
    }
示例#13
0
    public void PickupWeapon(WeaponPickup weapon)
    {
        List <Pickup> objectsToPickup = new List <Pickup> {
            weapon.ToPickup()
        };

        PickupObjects(objectsToPickup);
    }
示例#14
0
 public void RemoveNearbyWeaponPickup(WeaponPickup nearby_pickup)
 {
     nearby_weapon_pickups.Remove(nearby_pickup);
     if (pickupkey_down_item == nearby_pickup)
     {
         pickupkey_down_item = null;
     }
 }
示例#15
0
    public void AddWeapon(GameObject WeaponToAdd, WeaponPickup Pickup)
    {
        Weapon NewWeapon = WeaponToAdd.GetComponent <Weapon>();

        //If what we're picking up does not actually contain a weapon component, stop functionality
        if (NewWeapon == null)
        {
            if (Pickup != null)
            {
                Pickup.CleanupPickup(false);
            }
            return;
        }

        //Get Weapon Name
        string WeaponName = NewWeapon.GetWeaponName();

        //Checks to see if we're trying to pick up a weapon we already own
        foreach (Weapon WeaponCheck in Weapons)
        {
            if (WeaponCheck.GetWeaponName() == WeaponName)
            {
                if (Pickup != null)
                {
                    Pickup.CleanupPickup(false);
                }

                return;
            }
        }

        //Assigning weapon owner, used for determining who dealt damage
        NewWeapon.Owner = gameObject;

        //adding to array of owned weapons, childing weapon to owner
        Weapons.Add(NewWeapon);
        WeaponToAdd.transform.parent = transform;

        //reseting position and rotation
        WeaponToAdd.transform.rotation = new Quaternion(0, 0, 0, 0);
        WeaponToAdd.transform.position = WeaponAttachPoint.position;

        //If picked up from weapon pickup, say pickup was successful
        if (Pickup != null)
        {
            Pickup.CleanupPickup(true);
        }

        //If this is the first weapon we're picking up, switch to it
        if (Weapons.Count == 1)
        {
            SwitchWeapon(true);
        }

        UpdateCooldown(Weapons.Count - 1, NewWeapon);
    }
示例#16
0
 public void OnTriggerExit(Collider collider)
 {
     if (collider.tag == "Pickup")
     {
         if (activePickup == collider.GetComponent <WeaponPickup>())
         {
             activePickup = null;
         }
     }
 }
示例#17
0
    public void PickupWeapon(WeaponPickup newWeapon)
    {
        if (body.weapon.info.ToIndex() != 0)
        {
            return;
        }

        tm.PickupWeapon(newWeapon);
        SwitchWeapons(newWeapon.info.ToIndex());
    }
示例#18
0
    void OnTriggerEnter(Collider other)
    {
        PlayerCharacter player = other.GetComponent <PlayerCharacter>();

        if (safe)
        {
            missiontext.SetActive(true);
            resett.SetActive(true);
            exitt.SetActive(true);


            FPSInput f = FindObjectOfType <FPSInput> ();
            if (f != null)
            {
                f.SetAlive(false);
            }

            WeaponPickup wp = FindObjectOfType <WeaponPickup> ();
            if (wp != null)
            {
                wp.SetAlive(false);
            }

            SwitchWeapon sw = GameObject.Find("Camera").GetComponent <SwitchWeapon> ();
            if (sw != null)
            {
                sw.SetAlive(false);
            }

            GameObject[] e = GameObject.FindGameObjectsWithTag("Enemy");

            Shooting[] s = new Shooting[e.Length];
            for (int i = 0; i < e.Length; i++)
            {
                s[i] = e [i].GetComponent <Shooting> ();
                if (s [i] != null)
                {
                    s[i].SetAlive(false);
                }
            }

            CrateShooting[] cs = new CrateShooting[e.Length];
            for (int i = 0; i < e.Length; i++)
            {
                cs[i] = e [i].GetComponent <CrateShooting> ();
                if (cs [i] != null)
                {
                    cs[i].SetAlive(false);
                }
            }

            StartCoroutine(startCutScene());
        }
    }
示例#19
0
    void OnGUI()
    {
        GUILayout.Label ("Select pickup and DB", EditorStyles.boldLabel);
        UID = EditorGUILayout.IntField("UID: ",UID);
        WP = (WeaponPickup)EditorGUILayout.ObjectField("Pickup:",WP, typeof(WeaponPickup), true);
        WA = (WeaponAsset)EditorGUILayout.ObjectField("Asset List:",WA, typeof(WeaponAsset), true);

        if (GUILayout.Button("Add weapon to DB")) {
            UID = WeaponHandler.saveWeapon(WP.thisGun);
        }
    }
示例#20
0
 public void Release()
 {
     if (CurrentWeapon != null)
     {
         CurrentWeapon.Release();
         CurrentWeapon.transform.parent        = null;
         CurrentWeapon.transform.position      = transform.position;
         CurrentWeapon.transform.localRotation = transform.rotation;
         CurrentWeapon = null;
     }
 }
示例#21
0
 void OnTriggerStay(Collider objeto)
 {
     if (objeto.CompareTag("Melee") || objeto.CompareTag("Rango"))
     {
         if (Input.GetKeyDown(KeyCode.E))
         {
             WeaponPickup weapon = objeto.GetComponent <WeaponPickup>();
             ChangeWeapon(weapon.type, weapon.rarity, PhotonConnection.GetInstance().randomSeed);
         }
     }
 }
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "WeaponDrop")
        {
            currentPickup = other.gameObject.GetComponent <WeaponPickup>();

            /*if(OnNearPickup != null)
             * {
             *  OnNearPickup(currentPickup);
             * }*/
        }
    }
示例#23
0
    void OnGUI()
    {
        GUILayout.Label("Select pickup and DB", EditorStyles.boldLabel);
        UID = EditorGUILayout.IntField("UID: ", UID);
        WP  = (WeaponPickup)EditorGUILayout.ObjectField("Pickup:", WP, typeof(WeaponPickup), true);
        WA  = (WeaponAsset)EditorGUILayout.ObjectField("Asset List:", WA, typeof(WeaponAsset), true);

        if (GUILayout.Button("Add weapon to DB"))
        {
            UID = WeaponHandler.saveWeapon(WP.thisGun);
        }
    }
示例#24
0
    private int CheckWeaponType(Collider2D coll)
    {
        WeaponPickup pickup = coll.GetComponent <WeaponPickup>();

        for (int i = 0; i < weaponSync.weaponType.Length; i++)
        {
            if (weaponSync.weaponType[i] == pickup.weaponReference)
            {
                return(i + 1);
            }
        }
        return(0);
    }
示例#25
0
 private bool Grab(WeaponPickup weapon)
 {
     if (weapon.TryHold())
     {
         CurrentWeapon                  = weapon;
         weapon.transform.parent        = transform;
         weapon.transform.localPosition = Vector3.zero;
         weapon.transform.localRotation = Quaternion.identity;
         weapon.transform.localScale    = new Vector3(1, 1, 1);
         return(true);
     }
     return(false);
 }
 void SwitchWeapon(WeaponPickup _pickup)
 {
     // Drop current Weapon
     DropWeapon(_pickup.weaponIndexPosition, true);
     // equip new weapon
     weapons[_pickup.weaponIndexPosition].isEquipped = true;
     // apply unique stats to new weapon on pickup
     weapons[_pickup.weaponIndexPosition].ApplyUniqueWeaponStats(_pickup.stats);
     // run SFX
     switchWeaponSFX.Invoke();
     // destroiy pickup object once clip has played (double time to be safe)
     Destroy(_pickup.gameObject);
 }
    // Update is called once per frame
    void FixedUpdate()
    {
        PlayerInputClass inputState = manager.PlayerInputState;

        HealingGun.ammunition.UpdateHealthPackAmmo();

        if (inputState != null)
        {
            if (inputState.Switch)
            {
                if (HealingGun.gameObject.activeSelf)
                {
                    HealingGun.Shoot();
                }
                else if (!switchingWeapons)
                {
                    SwitchWeapon();
                }
            }

            if (inputState.Swap)
            {
                WeaponPickup p = manager.GetPickup();
                if (!HealingGun.gameObject.activeSelf && p != null)
                {
                    int c = p.AmmoInClip;
                    int a = p.ammo;
                    Debug.Log("Swapping: (" + c.ToString() + "," + a.ToString() + ")");

                    if (p.nonreloadable && p.worldSpawned && PowerupManager.GetPowerupStatus(Powerups.ExtraAmmo))
                    {
                        c += Mathf.CeilToInt((float)c / 4);
                    }

                    bool taken = SwapWeapon(p.weaponType, p.transform, a, c);
                    if (taken)
                    {
                        p.TakePickup();
                    }
                }
            }

            if (inputState.Heal && HealingGun.ammunition.remainingAmmo > 0 && playerHealth.currentHealth < playerHealth.maxHealth - 1)
            {
                if (!switchingWeapons)
                {
                    SwitchWeapon(HealingGun, GetCurrentWeapon());
                }
            }
        }
    }
示例#28
0
    public void Start()
    {
        weaponPickup    = gameObject.GetComponent <WeaponPickup>();
        dead            = false;
        sprite          = GetComponent <SpriteRenderer>();
        child_transform = gameObject.transform.GetChild(0);
        child_object    = child_transform.gameObject;
        child_sprite    = child_object.GetComponent <SpriteRenderer>();

        portal = GameObject.FindGameObjectWithTag("Portal");
        main   = GameObject.FindGameObjectWithTag("Main");
        score  = GameObject.FindGameObjectWithTag("Score");
        player = GameObject.FindGameObjectWithTag("Player");
    }
示例#29
0
    // Update is called once per frame
    void Update()
    {
        if (!ControlManager.IsInputEnabled())
        {
            return;
        }
        if (Input.GetButton("Fire1"))
        {
            TryFireWeapon();
        }
        List <Tuple <float, WeaponPickup> > nearby_weapons_distnaces = new List <Tuple <float, WeaponPickup> >();

        nearby_weapon_pickups.ForEach((WeaponPickup pickup) => {
            var pickup_distance = Vector3.Distance(gameObject.transform.position, pickup.gameObject.transform.position);
            nearby_weapons_distnaces.Add(new Tuple <float, WeaponPickup>(pickup_distance, pickup));
        });
        nearby_weapons_distnaces.Sort((x, y) => x.Item1.CompareTo(y.Item1));
        for (int i = 0; i < nearby_weapons_distnaces.Count; i++)
        {
            if (i == 0)
            {
                nearby_weapons_distnaces[i].Item2.DisplayPickupKey(true);
            }
            else
            {
                nearby_weapons_distnaces[i].Item2.DisplayPickupKey(false);
            }
        }
        if (Input.GetButton("TryPickup"))
        {
            if (nearby_weapons_distnaces.Count > 0)
            {
                pickupkey_down_item = nearby_weapons_distnaces[0].Item2;
            }
        }
        else if (Input.GetButtonUp("TryPickup") && pickupkey_down_item)
        {
            if (nearby_weapons_distnaces.Count > 0)
            {
                if (pickupkey_down_item == nearby_weapons_distnaces[0].Item2)
                {
                    var weapon_pickup = nearby_weapons_distnaces[0].Item2;
                    var weapon_prefab = weapon_pickup.GetWeaponTypePrefab();
                    PickupWeapon(weapon_prefab);
                    weapon_pickup.DoPickup();
                    pickupkey_down_item = null;
                }
            }
        }
    }
示例#30
0
    public void Enter(AiAgent agent)
    {
        if (agent.weapons.hasWeapon)
        {
            agent.stateMachine.ChangeState(AiStateId.Idle);
        }

        if (!agent.weapons.hasWeapon)
        {
            WeaponPickup pickup = FindClosetWeapon(agent);
            agent.navMeshAgent.destination = pickup.transform.position;
            agent.navMeshAgent.speed       = 5;
        }
    }
示例#31
0
    public static void dropWeapon(string weaponName, Vector3 position)
    {
        Debug.Log("Dropping a weapon: " + weaponName);
        var pickupObject   = Resources.Load("Pickup_Weapon"); //generic pickup object
        var pickupInstance = (GameObject)Instantiate(pickupObject, position, Quaternion.identity);
        var pickupMesh     = pickupInstance.transform.Find("Mesh");
        var weaponObject   = WeaponGenerator.getWeaponGameObject(weaponName);
        var weaponInstance = Instantiate(weaponObject, position, Quaternion.identity, pickupMesh);
        WeaponController weaponController = weaponInstance.GetComponentInChildren(typeof(WeaponController)) as WeaponController;

        WeaponGenerator.modWeapon(weaponController, weaponName);
        WeaponPickup weaponPickupComponent = pickupInstance.AddComponent(typeof(WeaponPickup)) as WeaponPickup;

        weaponPickupComponent.weaponPrefab = weaponController;
    }