summaryrefslogtreecommitdiff
path: root/Assets/Art/Vfx/StylizedProjectilePack1/WebDemo/scripts/projectileActor.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-08-31 19:07:21 +0800
committerchai <chaifix@163.com>2021-08-31 19:07:21 +0800
commitffd1d5af496e0a0eff343b27c4f0f965bbbf79eb (patch)
treec5a8ae2116040ce8c483454b2e82093f247db341 /Assets/Art/Vfx/StylizedProjectilePack1/WebDemo/scripts/projectileActor.cs
parent476abf41a7357db0dd870f0d221f1a26481ab2bf (diff)
*projectile
Diffstat (limited to 'Assets/Art/Vfx/StylizedProjectilePack1/WebDemo/scripts/projectileActor.cs')
-rw-r--r--Assets/Art/Vfx/StylizedProjectilePack1/WebDemo/scripts/projectileActor.cs253
1 files changed, 253 insertions, 0 deletions
diff --git a/Assets/Art/Vfx/StylizedProjectilePack1/WebDemo/scripts/projectileActor.cs b/Assets/Art/Vfx/StylizedProjectilePack1/WebDemo/scripts/projectileActor.cs
new file mode 100644
index 00000000..86fc9fea
--- /dev/null
+++ b/Assets/Art/Vfx/StylizedProjectilePack1/WebDemo/scripts/projectileActor.cs
@@ -0,0 +1,253 @@
+using UnityEngine;
+using System.Collections;
+using UnityEngine.UI;
+
+public class projectileActor : MonoBehaviour {
+
+ public Transform spawnLocator;
+ public Transform spawnLocatorMuzzleFlare;
+ public Transform shellLocator;
+ public Animator recoilAnimator;
+
+ public Transform[] shotgunLocator;
+
+ [System.Serializable]
+ public class projectile
+ {
+ public string name;
+ public Rigidbody bombPrefab;
+ public GameObject muzzleflare;
+ public float min, max;
+ public bool rapidFire;
+ public float rapidFireCooldown;
+
+ public bool shotgunBehavior;
+ public int shotgunPellets;
+ public GameObject shellPrefab;
+ public bool hasShells;
+ }
+ public projectile[] bombList;
+
+
+ string FauxName;
+ public Text UiText;
+
+ public bool UImaster = true;
+ public bool CameraShake = true;
+ public float rapidFireDelay;
+ public CameraShake CameraShakeCaller;
+
+ float firingTimer;
+ public bool firing;
+ public int bombType = 0;
+
+ // public ParticleSystem muzzleflare;
+
+ public bool swarmMissileLauncher = false;
+ int projectileSimFire = 1;
+
+ public bool Torque = false;
+ public float Tor_min, Tor_max;
+
+ public bool MinorRotate;
+ public bool MajorRotate = false;
+ int seq = 0;
+
+
+ // Use this for initialization
+ void Start ()
+ {
+ if (UImaster)
+ {
+ UiText.text = bombList[bombType].name.ToString();
+ }
+ if (swarmMissileLauncher)
+ {
+ projectileSimFire = 5;
+ }
+ }
+
+ // Update is called once per frame
+ void Update ()
+ {
+ //Movement
+ if(Input.GetButton("Horizontal"))
+ {
+ if (Input.GetAxis("Horizontal") < 0)
+ {
+ gameObject.transform.Rotate(Vector3.up, -25 * Time.deltaTime);
+ }
+ else
+ {
+ gameObject.transform.Rotate(Vector3.up, 25 * Time.deltaTime);
+ }
+ }
+
+ //BULLETS
+ if (Input.GetKeyDown(KeyCode.D))
+ {
+ Switch(-1);
+ }
+ if (Input.GetButtonDown("Fire2") || Input.GetKeyDown(KeyCode.A))
+ {
+ Switch(1);
+ }
+
+ if(Input.GetButtonDown("Fire1"))
+ {
+ firing = true;
+ Fire();
+ }
+ if (Input.GetButtonUp("Fire1"))
+ {
+ firing = false;
+ firingTimer = 0;
+ }
+
+ if (bombList[bombType].rapidFire && firing)
+ {
+ if(firingTimer > bombList[bombType].rapidFireCooldown+rapidFireDelay)
+ {
+ Fire();
+ firingTimer = 0;
+ }
+ }
+
+ if(firing)
+ {
+ firingTimer += Time.deltaTime;
+ }
+ }
+
+ public void Switch(int value)
+ {
+ bombType += value;
+ if (bombType < 0)
+ {
+ bombType = bombList.Length;
+ bombType--;
+ }
+ else if (bombType >= bombList.Length)
+ {
+ bombType = 0;
+ }
+ if (UImaster)
+ {
+ UiText.text = bombList[bombType].name.ToString();
+ }
+ }
+
+ public void Fire()
+ {
+ if(CameraShake)
+ {
+ CameraShakeCaller.ShakeCamera();
+ }
+ Instantiate(bombList[bombType].muzzleflare, spawnLocatorMuzzleFlare.position, spawnLocatorMuzzleFlare.rotation);
+ // bombList[bombType].muzzleflare.Play();
+
+ if (bombList[bombType].hasShells)
+ {
+ Instantiate(bombList[bombType].shellPrefab, shellLocator.position, shellLocator.rotation);
+ }
+ recoilAnimator.SetTrigger("recoil_trigger");
+
+ Rigidbody rocketInstance;
+ rocketInstance = Instantiate(bombList[bombType].bombPrefab, spawnLocator.position,spawnLocator.rotation) as Rigidbody;
+ // Quaternion.Euler(0,90,0)
+ rocketInstance.AddForce(spawnLocator.forward * Random.Range(bombList[bombType].min, bombList[bombType].max));
+
+ if (bombList[bombType].shotgunBehavior)
+ {
+ for(int i = 0; i < bombList[bombType].shotgunPellets ;i++ )
+ {
+ Rigidbody rocketInstanceShotgun;
+ rocketInstanceShotgun = Instantiate(bombList[bombType].bombPrefab, shotgunLocator[i].position, shotgunLocator[i].rotation) as Rigidbody;
+ // Quaternion.Euler(0,90,0)
+ rocketInstanceShotgun.AddForce(shotgunLocator[i].forward * Random.Range(bombList[bombType].min, bombList[bombType].max));
+ }
+ }
+
+ if (Torque)
+ {
+ rocketInstance.AddTorque(spawnLocator.up * Random.Range(Tor_min, Tor_max));
+ }
+ if (MinorRotate)
+ {
+ RandomizeRotation();
+ }
+ if (MajorRotate)
+ {
+ Major_RandomizeRotation();
+ }
+ }
+
+
+ void RandomizeRotation()
+ {
+ if (seq == 0)
+ {
+ seq++;
+ transform.Rotate(0, 1, 0);
+ }
+ else if (seq == 1)
+ {
+ seq++;
+ transform.Rotate(1, 1, 0);
+ }
+ else if (seq == 2)
+ {
+ seq++;
+ transform.Rotate(1, -3, 0);
+ }
+ else if (seq == 3)
+ {
+ seq++;
+ transform.Rotate(-2, 1, 0);
+ }
+ else if (seq == 4)
+ {
+ seq++;
+ transform.Rotate(1, 1, 1);
+ }
+ else if (seq == 5)
+ {
+ seq = 0;
+ transform.Rotate(-1, -1, -1);
+ }
+ }
+
+ void Major_RandomizeRotation()
+ {
+ if (seq == 0)
+ {
+ seq++;
+ transform.Rotate(0, 25, 0);
+ }
+ else if (seq == 1)
+ {
+ seq++;
+ transform.Rotate(0, -50, 0);
+ }
+ else if (seq == 2)
+ {
+ seq++;
+ transform.Rotate(0, 25, 0);
+ }
+ else if (seq == 3)
+ {
+ seq++;
+ transform.Rotate(25, 0, 0);
+ }
+ else if (seq == 4)
+ {
+ seq++;
+ transform.Rotate(-50, 0, 0);
+ }
+ else if (seq == 5)
+ {
+ seq = 0;
+ transform.Rotate(25, 0, 0);
+ }
+ }
+}