diff options
Diffstat (limited to 'SurvivalTest/Assets/Scripts/Weapons')
22 files changed, 492 insertions, 0 deletions
diff --git a/SurvivalTest/Assets/Scripts/Weapons/LightSaber.meta b/SurvivalTest/Assets/Scripts/Weapons/LightSaber.meta new file mode 100644 index 0000000..1920297 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/LightSaber.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 253a4032920545c4488fd1eeedac07e3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/LightSaber/LightSaber.cs b/SurvivalTest/Assets/Scripts/Weapons/LightSaber/LightSaber.cs new file mode 100644 index 0000000..4db08ee --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/LightSaber/LightSaber.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightSaber : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/SurvivalTest/Assets/Scripts/Weapons/LightSaber/LightSaber.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/LightSaber/LightSaber.cs.meta new file mode 100644 index 0000000..e8200d8 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/LightSaber/LightSaber.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 72f3d28485a45ba4b8906603b170f9fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/LightSaber/Weapon_LightSaber.cs b/SurvivalTest/Assets/Scripts/Weapons/LightSaber/Weapon_LightSaber.cs new file mode 100644 index 0000000..ad942f3 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/LightSaber/Weapon_LightSaber.cs @@ -0,0 +1,63 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Weapon_LightSaber : WeaponBase +{ + public override string name => "¹â½£"; + + public override string iconPath => "art/ui/weaponicon/light_saber"; + + public override AutoMode autoMode => AutoMode.Condition; + + private string lightSaberPrefabPath = "prefabs/weapon/light_saber"; + + private bool isWielding = false; + + private LightSaber m_LightSaber; + + private TopDownTransform m_TopDownTransform; + + private float m_Dist = 0.2f; + + public override void OnInitialize(GameObject owner) + { + m_LightSaber = UnityEngine.Object.Instantiate<LightSaber>(ResourceManager.Instance.Load<LightSaber>(lightSaberPrefabPath)); + m_TopDownTransform = m_LightSaber.gameObject.GetComponent<TopDownTransform>(); + SetLightSaberPositionAndRotation(owner.GetComponent<CrewScript>()); + m_LightSaber.gameObject.SetActive(false); + } + + public override bool CheckCondition(GameObject owner) + { + return true; + } + + public override void OnTrigger(GameObject owner) + { + if (isWielding) + return; + isWielding = true; + + m_LightSaber.gameObject.SetActive(true); + } + + public override void OnStop(GameObject owner) + { + isWielding = false; + m_LightSaber.gameObject.SetActive(false); + } + + public override void Update(GameObject owner) + { + CrewScript crew = owner.GetComponent<CrewScript>(); + SetLightSaberPositionAndRotation(crew); + } + + void SetLightSaberPositionAndRotation(CrewScript crew) + { + m_LightSaber.transform.position = crew.arrow.position + new Vector3(crew.aimDirection.x, crew.aimDirection.y, 0) * m_Dist; + m_LightSaber.transform.rotation = Quaternion.Euler(0, 0, Mathf.Atan2(crew.aimDirection.y, crew.aimDirection.x) * Mathf.Rad2Deg); + } + +}
\ No newline at end of file diff --git a/SurvivalTest/Assets/Scripts/Weapons/LightSaber/Weapon_LightSaber.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/LightSaber/Weapon_LightSaber.cs.meta new file mode 100644 index 0000000..68db854 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/LightSaber/Weapon_LightSaber.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d419253b4eae555459a2800a7c95308c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/RailGun.meta b/SurvivalTest/Assets/Scripts/Weapons/RailGun.meta new file mode 100644 index 0000000..901bfca --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/RailGun.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58852a4f6155748468fd8812fd61446d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/RailGun/RailGun.cs b/SurvivalTest/Assets/Scripts/Weapons/RailGun/RailGun.cs new file mode 100644 index 0000000..0ffb5eb --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/RailGun/RailGun.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class RailGun : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/SurvivalTest/Assets/Scripts/Weapons/RailGun/RailGun.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/RailGun/RailGun.cs.meta new file mode 100644 index 0000000..28040c3 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/RailGun/RailGun.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 840b1c98faf9e654abb4f09bf46fb3f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/RailGun/Weapon_RailGun.cs b/SurvivalTest/Assets/Scripts/Weapons/RailGun/Weapon_RailGun.cs new file mode 100644 index 0000000..abad760 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/RailGun/Weapon_RailGun.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Weapon_RailGun : WeaponBase +{ + public override string name => "¹ìµÀÅÚ"; + + public override string iconPath => ""; + + public override AutoMode autoMode => AutoMode.Interval; + + public override void OnTrigger(GameObject owner) + { + } +} diff --git a/SurvivalTest/Assets/Scripts/Weapons/RailGun/Weapon_RailGun.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/RailGun/Weapon_RailGun.cs.meta new file mode 100644 index 0000000..8ecfcb4 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/RailGun/Weapon_RailGun.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b319aeb6ad3ae5842bb716ffa24b898a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/WeaponBase.cs b/SurvivalTest/Assets/Scripts/Weapons/WeaponBase.cs new file mode 100644 index 0000000..d143199 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/WeaponBase.cs @@ -0,0 +1,66 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public abstract class WeaponBase +{ + + public abstract string name { get; } + + public abstract string iconPath { get; } + + /// <summary> + /// Á¬·¢Ä£Ê½ + /// </summary> + public enum AutoMode + { + Interval, // °´Ê±Á¬·¢£¬ÐèÒªÉèÖÃInterval + Condition, // °´Ìõ¼þ´¥·¢£¬ÐèÒªÖØÐ´CheckCondition + Always, // ³£×¤ + } + + public abstract AutoMode autoMode { get; } + + /// <summary> + /// ´¥·¢µÄʱ¼ä¼ä¸ô + /// </summary> + public virtual float interval { get; } + + /// <summary> + /// ³õʼ»¯ + /// </summary> + public virtual void OnInitialize(GameObject owner) + { + } + + /// <summary> + /// Ïú»Ù + /// </summary> + /// <param name="owner"></param> + public virtual void OnDestroy(GameObject owner) + { + } + + /// <summary> + /// ʹÓÃ×°±¸ + /// </summary> + public abstract void OnTrigger(GameObject owner); + + public virtual bool CheckCondition(GameObject owner) + { + return false; + } + + /// <summary> + /// Í£Ö¹¿ª»ð + /// </summary> + /// <param name="owner"></param> + public virtual void OnStop(GameObject owner) + { + } + + public virtual void Update(GameObject owner) + { + } + +} diff --git a/SurvivalTest/Assets/Scripts/Weapons/WeaponBase.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/WeaponBase.cs.meta new file mode 100644 index 0000000..23e0a00 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/WeaponBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9ad03a26b4af7a42a81bd9216665ebb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_Boomerang.cs b/SurvivalTest/Assets/Scripts/Weapons/Weapon_Boomerang.cs new file mode 100644 index 0000000..d701c83 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_Boomerang.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// »ØÐýïÚ +/// </summary> +public class Weapon_Boomerang : WeaponBase +{ + public override AutoMode autoMode => AutoMode.Condition; + + public override string name => "»ØÐýïÚ"; + + public override string iconPath => "art/ui/weaponicon/boomerang"; + + /// <summary> + /// ½Óµ½»ØÐýïÚºóÖØÐÂÖÀ³ö£¬·ñÔò¼ä¸ôÒ»¶Îʱ¼äͶÖÀ + /// </summary> + /// <param name="owner"></param> + /// <returns></returns> + public override bool CheckCondition(GameObject owner) + { + return false; + } + + public override void OnTrigger(GameObject owner) + { + } + + public override void Update(GameObject owner) + { + } + +}
\ No newline at end of file diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_Boomerang.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/Weapon_Boomerang.cs.meta new file mode 100644 index 0000000..401fde6 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_Boomerang.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c95bca840a78e64bba70c9ecceb2628 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_GrenadeLauncher.cs b/SurvivalTest/Assets/Scripts/Weapons/Weapon_GrenadeLauncher.cs new file mode 100644 index 0000000..3a4457a --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_GrenadeLauncher.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// Áñµ¯·¢ÉäÆ÷ +/// </summary> +public class Weapon_GrenadeLauncher : WeaponBase +{ + + public override string name => "Áñµ¯·¢ÉäÆ÷"; + + public override string iconPath => "art/ui/weaponicon/grenade"; + + public override AutoMode autoMode => AutoMode.Interval; + + public override float interval => 0.5f; + + private string prefabPath = "prefabs/grenade/grenade_v1"; + + // ÌØÐ§vfx + private string vfxPath = "prefabs/effect/eff_launch"; + + Vector3 GetRandomLaunchGrenadeDirection(CrewScript crew) + { + Vector3 dirOnPlane = Quaternion.Euler(0, 0, Random.Range(-15f, 15f)) * new Vector3(crew.aimDirection.x, crew.aimDirection.y, 0); + dirOnPlane = dirOnPlane.normalized; + Vector3 dir = new Vector3(dirOnPlane.x, dirOnPlane.y, Random.Range(0f, 1f)).normalized; + return dir.normalized; + } + + + public override void OnTrigger(GameObject owner) + { + CrewScript crew = owner.GetComponent<CrewScript>(); + + // grenade + TestPeaceMakerGrenade grenade = UnityEngine.Object.Instantiate<TestPeaceMakerGrenade>(ResourceManager.Instance.Load<TestPeaceMakerGrenade>(prefabPath)); + Vector3 position = owner.GetComponent<TopDownTransform>().position + new Vector3(0, 0, 1.8f); + grenade.Set(position, GetRandomLaunchGrenadeDirection(crew), Random.Range(8f, 10f)); + grenade.gameObject.SetActive(true); + + // vfx + GameObject eff = UnityEngine.Object.Instantiate<GameObject>(ResourceManager.Instance.Load<UnityEngine.GameObject>(vfxPath), crew.transform); + eff.transform.position = crew.launchPoint.position; + eff.SetActive(true); + + } +}
\ No newline at end of file diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_GrenadeLauncher.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/Weapon_GrenadeLauncher.cs.meta new file mode 100644 index 0000000..024da76 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_GrenadeLauncher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dba5a0f9f2cde934e9a3c047eadfbf00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_Gun.cs b/SurvivalTest/Assets/Scripts/Weapons/Weapon_Gun.cs new file mode 100644 index 0000000..5517edd --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_Gun.cs @@ -0,0 +1,57 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// 枪 +/// </summary> +public class Weapon_Gun : WeaponBase +{ + + public override string name => "枪"; + + public override string iconPath => "art/ui/weaponicon/gun"; + + public override AutoMode autoMode => AutoMode.Interval; + + public override float interval => 0.1f; + + private string prefabPath = "prefabs/bullet/bullet"; + + private int index = 0; + + TestPeaceMakerBullet CreateBullet(CrewScript crew, Vector2 dir, float speed, float lifeTime) + { + TestPeaceMakerBullet bullet = UnityEngine.Object.Instantiate<TestPeaceMakerBullet>(ResourceManager.Instance.Load< TestPeaceMakerBullet>(prefabPath)); + + bullet.transform.position = crew.arrow.position + new Vector3(crew.aimDirection.x, crew.aimDirection.y, 0) * -0.3f; + + bullet.Set(dir, speed, lifeTime); + bullet.gameObject.SetActive(true); + + return bullet; + } + + public override void OnTrigger(GameObject owner) + { + CrewScript crew = owner.GetComponent<CrewScript>(); + + index++; + index = index % 3; + + if(index == 0) + { + CreateBullet(crew, TestMathHelper.Rotate(crew.aimDirection, -10 * Mathf.Deg2Rad), 12f, 2f); + } + else if(index == 1) + { + CreateBullet(crew, crew.aimDirection, 12f, 2f); + } + else if(index == 2) + { + CreateBullet(crew, TestMathHelper.Rotate(crew.aimDirection, 10 * Mathf.Deg2Rad), 12f, 2f); + } + + } + +}
\ No newline at end of file diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_Gun.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/Weapon_Gun.cs.meta new file mode 100644 index 0000000..5aeaa24 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_Gun.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a5f1ba1ce3c9824f9dd23e7a47458e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_MightyGlove.cs b/SurvivalTest/Assets/Scripts/Weapons/Weapon_MightyGlove.cs new file mode 100644 index 0000000..3253f33 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_MightyGlove.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// ³¬·²ÊÖÌ×£¬¼¯ÆëÎå¿Å±¦Ê¯ÊÎÆ·½âËø³¬Îä +/// </summary> +public class Weapon_MightyGlove : WeaponBase +{ + + public override string name => "³¬·²ÊÖÌ×"; + + public override string iconPath => "art/ui/weaponicon/glove"; + + public override AutoMode autoMode => AutoMode.Interval; + + public override float interval => 100f; + + public override void OnTrigger(GameObject owner) + { + } +}
\ No newline at end of file diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_MightyGlove.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/Weapon_MightyGlove.cs.meta new file mode 100644 index 0000000..b0c414f --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_MightyGlove.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d9fff60e7cb47d545bef9de999f5a0f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_TeslaCoil.cs b/SurvivalTest/Assets/Scripts/Weapons/Weapon_TeslaCoil.cs new file mode 100644 index 0000000..1a6e448 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_TeslaCoil.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// ÌØË¹ÀÏßȦ +/// </summary> +public class Weapon_TeslaCoil : WeaponBase +{ + + public override string name => "ÌØË¹ÀÏßȦ"; + + public override string iconPath => "art/ui/weaponicon/tesla_coil"; + + public override AutoMode autoMode => AutoMode.Interval; + + public override float interval => 20f; + + public override void OnTrigger(GameObject owner) + { + } + +} diff --git a/SurvivalTest/Assets/Scripts/Weapons/Weapon_TeslaCoil.cs.meta b/SurvivalTest/Assets/Scripts/Weapons/Weapon_TeslaCoil.cs.meta new file mode 100644 index 0000000..5a30a14 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Weapons/Weapon_TeslaCoil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 482fe3c5e222fbe4b82527cd796989db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |