Ejemplo n.º 1
0
    //create weapon
    private GameObject CreateWeapon(GameObject parent, String weaponType, CreatureTypes localType)
    {
        //create weapon
        GameObject weapon = new GameObject("Weapon");

        weapon.transform.SetParent(parent.transform);

        Vector3 attachPoint = Vector3.zero;
        Vector3 scalePoint  = Vector3.zero;

        if (localType.Equals(CreatureTypes.MoonJelly))
        {
            attachPoint = CustomizationHandler.moonjellyfishGunPoint; scalePoint = CustomizationHandler.moonjellyfishGunScale;
        }
        if (localType.Equals(CreatureTypes.BottleNose))
        {
            attachPoint = CustomizationHandler.bottlenoseGunPoint; scalePoint = CustomizationHandler.bottlenoseGunScale;
        }

        if (IsWhaleOrNot(localType))
        {
            attachPoint /= 100;
            scalePoint  /= 75;
            weapon.transform.rotation = Quaternion.Euler(0, 0, -90);
        }
        else
        {
            attachPoint /= 300;
            scalePoint  /= 255;
        }

        weapon.transform.localPosition = attachPoint;
        weapon.transform.localScale    = scalePoint;

        SpriteRenderer weaponRenderer = weapon.AddComponent <SpriteRenderer>();

        weaponRenderer.sprite       = weaponSpritesMap[weaponType];
        weaponRenderer.sortingOrder = -3;

        WeaponHandlerScript weaponData = weapon.AddComponent <WeaponHandlerScript>();

        if (weaponType.Equals("nematocyst"))
        {
            weaponData.maxAmmo        = 10;
            weaponData.ammo           = weaponData.maxAmmo;
            weaponData.bulletSpeed    = 40;
            weaponData.damage         = 100;
            weaponData.firingSpeed    = 8;
            weaponData.loadedSprite   = SpriteHandler.nematocystSpriteLoaded;
            weaponData.unloadedSprite = SpriteHandler.nematocystSpriteUnloaded;
        }
        else if (weaponType.Equals("harpoonGun"))
        {
            weaponData.maxAmmo        = 30;
            weaponData.ammo           = weaponData.maxAmmo;
            weaponData.bulletSpeed    = 30;
            weaponData.damage         = 150;
            weaponData.firingSpeed    = 2;
            weaponData.fullyAuto      = true;
            weaponData.loadedSprite   = SpriteHandler.harpoonGunSprite;
            weaponData.unloadedSprite = SpriteHandler.harpoonGunSprite;

            weapon.transform.localScale = Vector3.Scale(weapon.transform.localScale, new Vector3(2.25F, 1.25F, 1.25F));
        }
        else if (weaponType.Equals("eggBazooka"))
        {
            weaponData.maxAmmo        = 1;
            weaponData.ammo           = weaponData.maxAmmo;
            weaponData.bulletSpeed    = 10;
            weaponData.damage         = 500;
            weaponData.firingSpeed    = 5;
            weaponData.fullyAuto      = false;
            weaponData.loadedSprite   = SpriteHandler.omeletteBringerSprite;
            weaponData.unloadedSprite = SpriteHandler.omeletteBringerSprite;

            weapon.transform.localScale = Vector3.Scale(weapon.transform.localScale, new Vector3(2.5F, 1.25F, 1.25F));
        }
        weaponData.type = (WeaponTypes)Enum.Parse(typeof(WeaponTypes), weaponType);

        return(weapon);
    }
Ejemplo n.º 2
0
    //update
    void Update()
    {
        //escape menu
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            escapeMenuPanel.SetActive(!escapeMenuPanel.activeSelf);
        }

        if (!escapeMenuPanel.activeSelf)
        {
            //handle weapon fire/rotate
            WeaponHandlerScript script = playerWeapon.GetComponent <WeaponHandlerScript>();

            if (script.fullyAuto)
            {
                if (Input.GetMouseButton(0))
                {
                    script.FireWeapon(isWhale, false);
                    if (script.canFire && !script.reloading)
                    {
                        for (int i = 0; i < UnityEngine.Random.Range(3, 7); i++)
                        {
                            CreateBubble(player.transform.position.x + (i / 5.5F) * UnityEngine.Random.Range(-0.5F, 0.5F), player.transform.position.y);
                        }
                    }
                }
            }
            else
            {
                if (Input.GetMouseButtonDown(0))
                {
                    script.FireWeapon(isWhale, false);
                    if (script.canFire && !script.reloading)
                    {
                        for (int i = 0; i < UnityEngine.Random.Range(3, 7); i++)
                        {
                            CreateBubble(player.transform.position.x + (i / 5.5F) * UnityEngine.Random.Range(-0.5F, 0.5F), player.transform.position.y);
                        }
                    }
                }
            }
            if (Input.GetMouseButtonDown(1))
            {
                script.ReloadWeapon();
            }

            Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10);
            Vector3 lookPos  = Camera.main.ScreenToWorldPoint(mousePos);
            lookPos = lookPos - transform.position;
            float angle = Mathf.Atan2(lookPos.y, lookPos.x) * Mathf.Rad2Deg;
            playerWeapon.transform.rotation = Quaternion.Euler(0, 0, angle);

            SpriteRenderer renderer = playerWeapon.GetComponent <SpriteRenderer>();
            if (angle < 0)
            {
                angle += 360;
            }
            else if (angle > 360)
            {
                angle -= 360;
            }
            if ((angle > 180 && angle < 360) || (angle < 0 && angle > 180))
            {
                renderer.flipY = true;
            }
            else
            {
                renderer.flipY = false;
            }
        }
    }