//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); }
//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; } } }