From d69adc7009c7953749b59ace2518c0a7c99faa47 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 24 Apr 2022 19:10:43 +0800 Subject: + light saber --- SurvivalTest/Assets/Scripts/Equips/EquipBase.cs | 28 +++++++++- .../Assets/Scripts/Equips/Equip_Boomerang.cs | 2 +- .../Assets/Scripts/Equips/Equip_LightSaber.cs | 18 ------- .../Assets/Scripts/Equips/Equip_LightSaber.cs.meta | 11 ---- SurvivalTest/Assets/Scripts/Equips/LightSaber.meta | 8 +++ .../Scripts/Equips/LightSaber/Equip_LightSaber.cs | 63 ++++++++++++++++++++++ .../Equips/LightSaber/Equip_LightSaber.cs.meta | 11 ++++ .../Assets/Scripts/Equips/LightSaber/LightSaber.cs | 18 +++++++ .../Scripts/Equips/LightSaber/LightSaber.cs.meta | 11 ++++ 9 files changed, 138 insertions(+), 32 deletions(-) delete mode 100644 SurvivalTest/Assets/Scripts/Equips/Equip_LightSaber.cs delete mode 100644 SurvivalTest/Assets/Scripts/Equips/Equip_LightSaber.cs.meta create mode 100644 SurvivalTest/Assets/Scripts/Equips/LightSaber.meta create mode 100644 SurvivalTest/Assets/Scripts/Equips/LightSaber/Equip_LightSaber.cs create mode 100644 SurvivalTest/Assets/Scripts/Equips/LightSaber/Equip_LightSaber.cs.meta create mode 100644 SurvivalTest/Assets/Scripts/Equips/LightSaber/LightSaber.cs create mode 100644 SurvivalTest/Assets/Scripts/Equips/LightSaber/LightSaber.cs.meta (limited to 'SurvivalTest/Assets/Scripts/Equips') diff --git a/SurvivalTest/Assets/Scripts/Equips/EquipBase.cs b/SurvivalTest/Assets/Scripts/Equips/EquipBase.cs index 334609d..ff8a198 100644 --- a/SurvivalTest/Assets/Scripts/Equips/EquipBase.cs +++ b/SurvivalTest/Assets/Scripts/Equips/EquipBase.cs @@ -16,6 +16,7 @@ public abstract class EquipBase { Interval, // 按时连发,需要设置Interval Condition, // 按条件触发,需要重写CheckCondition + Always, // 常驻 } public abstract AutoMode autoMode { get; } @@ -25,6 +26,21 @@ public abstract class EquipBase /// public virtual float interval { get; } + /// + /// 初始化 + /// + public virtual void OnInitialize(GameObject owner) + { + } + + /// + /// 销毁 + /// + /// + public virtual void OnDestroy(GameObject owner) + { + } + /// /// 使用装备 /// @@ -33,9 +49,17 @@ public abstract class EquipBase public virtual bool CheckCondition(GameObject owner) { return false; - } + } + + /// + /// 停止开火 + /// + /// + public virtual void OnStop(GameObject owner) + { + } - public virtual void Update() + public virtual void Update(GameObject owner) { } diff --git a/SurvivalTest/Assets/Scripts/Equips/Equip_Boomerang.cs b/SurvivalTest/Assets/Scripts/Equips/Equip_Boomerang.cs index 7ee6a3b..8e3d917 100644 --- a/SurvivalTest/Assets/Scripts/Equips/Equip_Boomerang.cs +++ b/SurvivalTest/Assets/Scripts/Equips/Equip_Boomerang.cs @@ -27,7 +27,7 @@ public class Equip_Boomerang : EquipBase { } - public override void Update() + public override void Update(GameObject owner) { } diff --git a/SurvivalTest/Assets/Scripts/Equips/Equip_LightSaber.cs b/SurvivalTest/Assets/Scripts/Equips/Equip_LightSaber.cs deleted file mode 100644 index a82ddc7..0000000 --- a/SurvivalTest/Assets/Scripts/Equips/Equip_LightSaber.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class Equip_LightSaber : EquipBase -{ - public override string name => "光剑"; - - public override string iconPath => "art/ui/equipicon/light_saber"; - - public override AutoMode autoMode => AutoMode.Interval; - - public override float interval => 5f; - - public override void OnTrigger(GameObject owner) - { - } -} \ No newline at end of file diff --git a/SurvivalTest/Assets/Scripts/Equips/Equip_LightSaber.cs.meta b/SurvivalTest/Assets/Scripts/Equips/Equip_LightSaber.cs.meta deleted file mode 100644 index dcc1028..0000000 --- a/SurvivalTest/Assets/Scripts/Equips/Equip_LightSaber.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cf80263cc579a3c46887c696a8f09d56 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Equips/LightSaber.meta b/SurvivalTest/Assets/Scripts/Equips/LightSaber.meta new file mode 100644 index 0000000..1920297 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Equips/LightSaber.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 253a4032920545c4488fd1eeedac07e3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Equips/LightSaber/Equip_LightSaber.cs b/SurvivalTest/Assets/Scripts/Equips/LightSaber/Equip_LightSaber.cs new file mode 100644 index 0000000..9066884 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Equips/LightSaber/Equip_LightSaber.cs @@ -0,0 +1,63 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Equip_LightSaber : EquipBase +{ + public override string name => "光剑"; + + public override string iconPath => "art/ui/equipicon/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(ResourceManager.Instance.Load(lightSaberPrefabPath)); + m_TopDownTransform = m_LightSaber.gameObject.GetComponent(); + SetLightSaberPositionAndRotation(owner.GetComponent()); + 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(); + 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/Equips/LightSaber/Equip_LightSaber.cs.meta b/SurvivalTest/Assets/Scripts/Equips/LightSaber/Equip_LightSaber.cs.meta new file mode 100644 index 0000000..dcc1028 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Equips/LightSaber/Equip_LightSaber.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf80263cc579a3c46887c696a8f09d56 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SurvivalTest/Assets/Scripts/Equips/LightSaber/LightSaber.cs b/SurvivalTest/Assets/Scripts/Equips/LightSaber/LightSaber.cs new file mode 100644 index 0000000..4db08ee --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Equips/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/Equips/LightSaber/LightSaber.cs.meta b/SurvivalTest/Assets/Scripts/Equips/LightSaber/LightSaber.cs.meta new file mode 100644 index 0000000..e8200d8 --- /dev/null +++ b/SurvivalTest/Assets/Scripts/Equips/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: -- cgit v1.1-26-g67d0