示例#1
0
    void AttemptPlayerEquipment()
    {
        if (!playercanmove)
        {
            return;
        }

        if (Input.GetKey(KeyCode.L) && (attacking == false) && (firing == false))
        {
            if (equipment == null)
            {
                Debug.Log("Can't use equipment yet, none have been found!");
                return;
            }
            else
            {
                if ((equipment.GetComponent <Staff>().Name.Equals("Shield")) && (timeBtwShield <= 0))
                {
                    //startTimeBtwEquipment = 10.0f;\
                    timeBtwShield = startTimeBtwShield;
                    animator.SetTrigger("Shielding");
                    playerAudio.clip = shieldClip;
                    playerAudio.Play();
                    blocking = true;
                }
                else if ((equipment.GetComponent <Staff>().Name.Equals("Time Stop Watch")) && (timeBtwStopwatch <= 0) && (!time_stopped))
                {
                    //startTimeBtwEquipment = 5.0f;
                    Debug.Log("Stop time!");
                    //timeBtwStopwatch = startTimeBtwStopwatch;
                    time_stop_counter     = start_time_stop_counter;
                    stop_time_count.value = time_stop_counter;
                    playerAudio.clip      = timeStopWatchClip;
                    stop_time_count.gameObject.SetActive(true);
                    time_stopped = true;
                    //gameObject.GetComponent<Time_Stop_Effect>;
                    playerAudio.Play();
                    // 1. Freeze enemies, 2. add blue tint to screen (perhaps copy damageImage from PlayerHealth?)
                }
                else if ((equipment.GetComponent <Staff>().Name.Equals("Nuka Soda")) && (timeBtwSoda <= 0) && (sodaCooldown <= 0))
                {
                    //startTimeBtwEquipment = 15.0f;
                    Debug.Log("Buff player!");
                    sodaBuff         = true;
                    animator.speed   = 2;
                    timeBtwSoda      = startTimeBtwSoda;
                    playerAudio.clip = nukaSodaClip;
                    playerAudio.Play();
                    // 1. Increase player movement speed, 2. Increase melee attack speed [3. Decrease cooldowns?]
                }
            }
            //timeBtwEquipment = startTimeBtwEquipment;
        }
    }
示例#2
0
    void AttemptPlayerProjectile()
    {
        if (!playercanmove)
        {
            return;
        }
        if ((Input.GetKey(KeyCode.K)) && (attacking == false))
        {
            if (rangedWeapon == null)
            {
                Debug.Log("Can't use any ranged weapons yet, none have been found!");
                return;
            }
            else
            {
                if ((rangedWeapon.GetComponent <Staff>().Name.Equals("Staff")) && (timeBtwFireball <= 0))
                {
                    animator.SetTrigger("CastingFireball");
                    playerAudio.clip = fireballClip;
                    playerAudio.Play();
                    timeBtwFireball = startTimeBtwFireball;
                    if (time_stopped)
                    {
                        time_stop_counter -= 200;
                    }

                    // Rotate bullet sprite to go with player direction
                    Quaternion fixedDirection = Quaternion.identity;
                    fixedDirection.eulerAngles = new Vector3(0, 0, 180 - (direction * 180)); // Multiply by 180 to convert to degrees.
                    Debug.Log("direction = " + direction);

                    Vector2 projectilePosition = transform.position;
                    float   projectileAngle    = Mathf.Round(direction * 2) / 2; // Round to nearest 0.5
                    if (projectileAngle == -0.5f)                                // if facing left
                    {
                        projectilePosition.x -= 0.15f;                           // offset from player pivot (to avoid shooting from chest)
                        projectilePosition.y += 0.15f;                           // offset from player feet pivot
                        GameObject go = (GameObject)Instantiate(bullet, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.left;
                    }
                    else if (projectileAngle == 0) // if facing up
                    {
                        projectilePosition.y += 0.25f;
                        GameObject go = (GameObject)Instantiate(bullet, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.up;
                    }
                    else if (projectileAngle == 0.5f) // if facing right
                    {
                        projectilePosition.x += 0.15f;
                        projectilePosition.y += 0.15f;
                        GameObject go = (GameObject)Instantiate(bullet, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.right;
                    }
                    else if ((projectileAngle == 1) || (projectileAngle == -1)) // if facing down
                    {
                        GameObject go = (GameObject)Instantiate(bullet, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.down;
                    }
                }
                else if ((rangedWeapon.GetComponent <Staff>().Name.Equals("Shotgun")) && (timeBtwShotgun <= 0))
                {
                    animator.SetTrigger("ShotgunShot");
                    playerAudio.clip = shotgunClip;
                    playerAudio.Play();
                    timeBtwShotgun = startTimeBtwShotgun;
                    if (time_stopped)
                    {
                        time_stop_counter -= 200;
                    }

                    for (int i = 0; i < 3; i++)
                    {
                        // Spawns bullet
                        GameObject tempBullet = null;
                        // Randomize angle variation between bullets
                        float spreadAngle = Random.Range(-25, 25);
                        float rotateAngle = 0;
                        // Rotate bullet sprite to go with player direction
                        Quaternion fixedDirection = Quaternion.identity;
                        fixedDirection.eulerAngles = new Vector3(0, 0, 180 - (direction * 180)); // Multiply by 180 to convert to degrees.

                        Vector2 projectilePosition = transform.position;
                        float   projectileAngle    = Mathf.Round(direction * 2) / 2; // Round to nearest 0.5
                        if (projectileAngle == -0.5f)                                // if facing left
                        {
                            projectilePosition.x -= 0.15f;                           // offset from player pivot (to avoid shooting from chest)
                            projectilePosition.y += 0.15f;                           // offset from player feet pivot
                            tempBullet            = (GameObject)Instantiate(shotgunPellet, projectilePosition, fixedDirection);
                            rotateAngle           = spreadAngle + (Mathf.Atan2(Vector2.left.y, Vector2.left.x) * Mathf.Rad2Deg);
                        }
                        else if (projectileAngle == 0) // if facing up
                        {
                            projectilePosition.y += 0.25f;
                            tempBullet            = (GameObject)Instantiate(shotgunPellet, projectilePosition, fixedDirection);
                            rotateAngle           = spreadAngle + (Mathf.Atan2(Vector2.up.y, Vector2.up.x) * Mathf.Rad2Deg);
                        }
                        else if (projectileAngle == 0.5f) // if facing right
                        {
                            projectilePosition.x += 0.15f;
                            projectilePosition.y += 0.15f;
                            tempBullet            = (GameObject)Instantiate(shotgunPellet, projectilePosition, fixedDirection);
                            rotateAngle           = spreadAngle + (Mathf.Atan2(Vector2.right.y, Vector2.right.x) * Mathf.Rad2Deg);
                        }
                        else if ((projectileAngle == 1) || (projectileAngle == -1)) // if facing down
                        {
                            tempBullet  = (GameObject)Instantiate(shotgunPellet, projectilePosition, fixedDirection);
                            rotateAngle = spreadAngle + (Mathf.Atan2(Vector2.down.y, Vector2.down.x) * Mathf.Rad2Deg);
                        }

                        // Calculate the new direction we will move in which takes into account
                        // the random angle generated
                        var MovementDirection = new Vector2(Mathf.Cos(rotateAngle * Mathf.Deg2Rad), Mathf.Sin(rotateAngle * Mathf.Deg2Rad)).normalized;

                        if (tempBullet != null)
                        {
                            Rigidbody2D tempBulletRB = tempBullet.GetComponent <Rigidbody2D>();
                            // tempBulletRB.velocity = MovementDirection * bulletSpeed;
                            tempBulletRB.velocity = MovementDirection * 5;
                            Destroy(tempBullet, 0.3f);
                        }
                    }
                }
                else if ((rangedWeapon.GetComponent <Staff>().Name.Equals("Holy Hand Grenade")) && (timeBtwGrenade <= 0))
                {
                    timeBtwGrenade = startTimeBtwGrenade;
                    if (time_stopped)
                    {
                        time_stop_counter -= 400;
                    }
                    // Rotate grenade sprite to go with player direction
                    Quaternion fixedDirection = Quaternion.identity;
                    fixedDirection.eulerAngles = new Vector3(0, 0, 180 - (direction * 180)); // Multiply by 180 to convert to degrees.
                    Debug.Log("direction = " + direction);

                    Vector2 projectilePosition = transform.position;
                    float   projectileAngle    = Mathf.Round(direction * 2) / 2; // Round to nearest 0.5
                    if (projectileAngle == -0.5f)                                // if facing left
                    {
                        projectilePosition.x -= 0.15f;                           // offset from player pivot (to avoid shooting from chest)
                        projectilePosition.y += 0.15f;                           // offset from player feet pivot
                        GameObject go = (GameObject)Instantiate(grenade, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.left;
                    }
                    else if (projectileAngle == 0) // if facing up
                    {
                        projectilePosition.y += 0.25f;
                        GameObject go = (GameObject)Instantiate(grenade, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.up;
                    }
                    else if (projectileAngle == 0.5f) // if facing right
                    {
                        projectilePosition.x += 0.15f;
                        projectilePosition.y += 0.15f;
                        GameObject go = (GameObject)Instantiate(grenade, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.right;
                    }
                    else if ((projectileAngle == 1) || (projectileAngle == -1)) // if facing down
                    {
                        GameObject go = (GameObject)Instantiate(grenade, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.down;
                    }
                }

                if ((rangedWeapon.GetComponent <Staff>().Name.Equals("Laser Cannon")) && (timeBtwLaser <= 0))
                {
                    animator.SetTrigger("FiringLaser");
                    playerAudio.clip = laserCannonClip;
                    playerAudio.Play();
                    timeBtwLaser = startTimeBtwLaser;
                    if (time_stopped)
                    {
                        time_stop_counter -= 600;
                    }

                    // Rotate bullet sprite to go with player direction
                    Quaternion fixedDirection = Quaternion.identity;
                    fixedDirection.eulerAngles = new Vector3(0, 0, 180 - (direction * 180)); // Multiply by 180 to convert to degrees.
                    Debug.Log("direction = " + direction);

                    Vector2 projectilePosition = transform.position;
                    float   projectileAngle    = Mathf.Round(direction * 2) / 2; // Round to nearest 0.5
                    if (projectileAngle == -0.5f)                                // if facing left
                    {
                        projectilePosition.x -= 0.15f;                           // offset from player pivot (to avoid shooting from chest)
                        projectilePosition.y += 0.15f;                           // offset from player feet pivot
                        GameObject go = (GameObject)Instantiate(laser, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.left;
                    }
                    else if (projectileAngle == 0) // if facing up
                    {
                        projectilePosition.y += 0.25f;
                        GameObject go = (GameObject)Instantiate(laser, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.up;
                    }
                    else if (projectileAngle == 0.5f) // if facing right
                    {
                        projectilePosition.x += 0.15f;
                        projectilePosition.y += 0.15f;
                        GameObject go = (GameObject)Instantiate(laser, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.right;
                    }
                    else if ((projectileAngle == 1) || (projectileAngle == -1)) // if facing down
                    {
                        GameObject go = (GameObject)Instantiate(laser, projectilePosition, fixedDirection);
                        go.GetComponent <Rigidbody2D>().velocity = Vector2.down;
                    }
                }
            }

            firing = true;
            if (blocking == true)
            {
                animator.SetTrigger("ExitShielding");
                blocking = false;
                if (shieldEquipped)
                {
                    timeBtwEquipment = 1f;
                    timeBtwShield    = 0;
                }
            }

            timeBtwProject = startTimeBtwProject;
        }
    }
示例#3
0
    void SetPlayerStartingItems()
    {
        int count = 0;

        if (Inventory != null)
        {
            Inventory.ItemUsed    += Inventory_ItemUsed;
            Inventory.ItemRemoved += Inventory_ItemRemoved;

            if (meleeWeapon != null)
            {
                InventoryItemBase sword = meleeWeapon.GetComponent <InventoryItemBase>();
                Inventory.AddItem(sword);
                // Update GUI label and add to existing list to minimize iteration on HUD slots later
                UpdateAssignedKeyText(count++, "J");
                itemsEquipped.Add(sword);
            }

            // if (rangedWeapon != null)
            // {
            //     InventoryItemBase startRanged = rangedWeapon.GetComponent<InventoryItemBase>();
            //     UpdateAssignedKeyText(count++, "K");
            //     Inventory.AddItem(startRanged);
            // }

            // if (equipment != null)
            // {
            //     InventoryItemBase startEquip = equipment.GetComponent<InventoryItemBase>();
            //     UpdateAssignedKeyText(count++, "L");
            //     Inventory.AddItem(startEquip);
            // }

            if (GameController.control.grenade)
            {
                InventoryItemBase grenadeInventoryObject = GameObject.FindGameObjectWithTag("PlayerGrenade").GetComponent <Staff>();
                Inventory.AddItem(grenadeInventoryObject);
                itemsEquipped.Add(grenadeInventoryObject);
            }
            if (GameController.control.shield)
            {
                InventoryItemBase shieldInventoryObject = GameObject.FindGameObjectWithTag("PlayerShield").GetComponent <Staff>();
                Inventory.AddItem(shieldInventoryObject);
                itemsEquipped.Add(shieldInventoryObject);
            }
            if (GameController.control.shotgun)
            {
                InventoryItemBase shotgunInventoryObject = GameObject.FindGameObjectWithTag("PlayerShotgun").GetComponent <Staff>();
                Inventory.AddItem(shotgunInventoryObject);
                itemsEquipped.Add(shotgunInventoryObject);
            }
            if (GameController.control.staff)
            {
                InventoryItemBase staffInventoryObject = GameObject.FindGameObjectWithTag("PlayerStaff").GetComponent <Staff>();
                Inventory.AddItem(staffInventoryObject);
                itemsEquipped.Add(staffInventoryObject);
            }
            if (GameController.control.watch)
            {
                InventoryItemBase watchInventoryObject = GameObject.FindGameObjectWithTag("PlayerWatch").GetComponent <Staff>();
                Inventory.AddItem(watchInventoryObject);
                itemsEquipped.Add(watchInventoryObject);
            }
            if (GameController.control.soda)
            {
                InventoryItemBase sodaInventoryObject = GameObject.FindGameObjectWithTag("PlayerSoda").GetComponent <Staff>();
                Inventory.AddItem(sodaInventoryObject);
                itemsEquipped.Add(sodaInventoryObject);
            }
            if (GameController.control.cannon)
            {
                InventoryItemBase cannonInventoryObject = GameObject.FindGameObjectWithTag("PlayerCannon").GetComponent <Staff>();
                Inventory.AddItem(cannonInventoryObject);
                itemsEquipped.Add(cannonInventoryObject);
            }

            SetPlayerItemBooleans();
        }
    }