diff options
Diffstat (limited to 'Assets/Scripts')
18 files changed, 414 insertions, 59 deletions
diff --git a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs index b2d7356b..a2057900 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs @@ -45,9 +45,9 @@ public class MoveAbility : AbilityBase public override void OnUpdate()
{
- foreach (var trigger in m_AbilityTriggers)
+ foreach (var abilityTrigger in m_AbilityTriggers)
{
- if (trigger.Update())
+ if (abilityTrigger.Update())
break;
}
}
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs index c14624ad..e63bedb0 100644 --- a/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs @@ -103,3 +103,75 @@ public sealed class ConditionNone : ConditionBase }
+/// <summary>
+/// 两个condition都达成才会返回真
+/// </summary>
+public sealed class ConditionMultiAnd : ConditionBase
+{
+ List<ConditionBase> m_Conditions;
+
+ public ConditionMultiAnd(List<ConditionBase> conditions)
+ : base()
+ {
+ m_Conditions.AddRange(conditions);
+ }
+
+ public override bool Evaluate()
+ {
+ foreach(var condition in m_Conditions)
+ {
+ if(!condition.Evaluate())
+ return false;
+ }
+ return true;
+ }
+}
+
+/// <summary>
+/// 两个condition至少一个达成才会返回真
+/// </summary>
+public sealed class ConditionMultiOr : ConditionBase
+{
+ List<ConditionBase> m_Conditions;
+
+ public ConditionMultiOr(List<ConditionBase> conditions)
+ : base()
+ {
+ m_Conditions.AddRange(conditions);
+ }
+
+ public override bool Evaluate()
+ {
+ foreach (var condition in m_Conditions)
+ {
+ if (condition.Evaluate())
+ return true;
+ }
+ return false;
+ }
+}
+
+/// <summary>
+/// 两个condition都不达成才会返回真
+/// </summary>
+public sealed class ConditionMultiNone : ConditionBase
+{
+ List<ConditionBase> m_Conditions;
+
+ public ConditionMultiNone(List<ConditionBase> conditions)
+ : base()
+ {
+ m_Conditions.AddRange(conditions);
+ }
+
+ public override bool Evaluate()
+ {
+ foreach (var condition in m_Conditions)
+ {
+ if (condition.Evaluate())
+ return false;
+ }
+ return true;
+ }
+}
+
diff --git a/Assets/Scripts/Physics/Box.cs b/Assets/Scripts/Physics/Box.cs deleted file mode 100644 index 1f022f51..00000000 --- a/Assets/Scripts/Physics/Box.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class NewBehaviourScript : MonoBehaviour
-{
- // Start is called before the first frame update
- void Start()
- {
-
- }
-
- // Update is called once per frame
- void Update()
- {
-
- }
-}
diff --git a/Assets/Scripts/Physics/HitBox.cs b/Assets/Scripts/Physics/HitBox.cs index 09e1f90a..a6337abd 100644 --- a/Assets/Scripts/Physics/HitBox.cs +++ b/Assets/Scripts/Physics/HitBox.cs @@ -2,17 +2,7 @@ using System.Collections.Generic;
using UnityEngine;
-public class AttackBox : MonoBehaviour
+public class HitBox : PhysicsBox
{
- // Start is called before the first frame update
- void Start()
- {
-
- }
- // Update is called once per frame
- void Update()
- {
-
- }
}
diff --git a/Assets/Scripts/Physics/PhysicsBall.cs b/Assets/Scripts/Physics/PhysicsBall.cs new file mode 100644 index 00000000..2a076718 --- /dev/null +++ b/Assets/Scripts/Physics/PhysicsBall.cs @@ -0,0 +1,20 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PhysicsBall : PhysicsPrimitive
+{
+ public Vector3 m_Center;
+ public float m_Radius;
+
+ public void OnDrawGizmos()
+ {
+ Gizmos.DrawSphere(m_Center, m_Radius);
+ }
+
+ void Start()
+ {
+ base.OnInit();
+ }
+
+}
diff --git a/Assets/Scripts/Physics/PhysicsUtils.cs.meta b/Assets/Scripts/Physics/PhysicsBall.cs.meta index b47b63fc..39ba3e3f 100644 --- a/Assets/Scripts/Physics/PhysicsUtils.cs.meta +++ b/Assets/Scripts/Physics/PhysicsBall.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d859c78cbe7a7db4881bfd4d0274a16e +guid: 04071fd85519f204fb0d0dc080c41bae MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Physics/PhysicsBody.cs b/Assets/Scripts/Physics/PhysicsBody.cs new file mode 100644 index 00000000..812b77b7 --- /dev/null +++ b/Assets/Scripts/Physics/PhysicsBody.cs @@ -0,0 +1,43 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 刚体
+/// </summary>
+public sealed class PhysicsBody : MonoBehaviour
+{
+
+ [SerializeField]
+ private Vector3 m_Velocity;
+ public Vector3 Velocity
+ {
+ get
+ {
+ return m_Velocity;
+ }
+ }
+
+ [SerializeField]
+ private float m_Weight;
+ public float Weight
+ {
+ get
+ {
+ return m_Weight;
+ }
+ }
+
+ [SerializeField]
+ private Vector3 m_Accelaration;
+ public Vector3 Accelaration
+ {
+ get
+ {
+ return m_Accelaration;
+ }
+ }
+
+
+
+}
diff --git a/Assets/Scripts/Physics/PhysicsBody.cs.meta b/Assets/Scripts/Physics/PhysicsBody.cs.meta new file mode 100644 index 00000000..a80b9d50 --- /dev/null +++ b/Assets/Scripts/Physics/PhysicsBody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd65b198d10c5b441b5c40b05c8f3d41 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Physics/PhysicsBox.cs b/Assets/Scripts/Physics/PhysicsBox.cs new file mode 100644 index 00000000..93f2a45f --- /dev/null +++ b/Assets/Scripts/Physics/PhysicsBox.cs @@ -0,0 +1,32 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PhysicsBox : PhysicsPrimitive
+{
+ /// <summary>
+ /// 中心点
+ /// </summary>
+ public Vector3 m_Center;
+
+ /// <summary>
+ /// 长宽高
+ /// </summary>
+ public Vector3 m_Size;
+
+ public float Long { get { return m_Size.x; } }
+ public float Wide { get { return m_Size.y; } }
+ public float Height { get { return m_Size.z; } }
+
+ public void OnDrawGizmos()
+ {
+ Vector3 pos = m_Center + transform.position;
+ Gizmos.DrawCube(pos, m_Size);
+ }
+
+ private void Start()
+ {
+ base.OnInit();
+ }
+
+}
diff --git a/Assets/Scripts/Physics/Box.cs.meta b/Assets/Scripts/Physics/PhysicsBox.cs.meta index 528c7474..528c7474 100644 --- a/Assets/Scripts/Physics/Box.cs.meta +++ b/Assets/Scripts/Physics/PhysicsBox.cs.meta diff --git a/Assets/Scripts/Physics/PhysicsHelper.cs b/Assets/Scripts/Physics/PhysicsHelper.cs new file mode 100644 index 00000000..27d04051 --- /dev/null +++ b/Assets/Scripts/Physics/PhysicsHelper.cs @@ -0,0 +1,54 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 碰撞的信息
+/// </summary>
+public class PhysicsCollisionInfo
+{
+
+}
+
+public sealed class PhysicsHelper
+{
+
+ public static bool BallvsBall(PhysicsBall ball1, PhysicsBall ball2, out PhysicsCollisionInfo info)
+ {
+ info = null;
+ return true;
+ }
+
+ public static bool BoxvsBox(PhysicsBox box1, PhysicsBox box2, out PhysicsCollisionInfo info)
+ {
+ info = null;
+ return true;
+ }
+
+ public static bool BallvsBox(PhysicsBall ball, PhysicsBox box, out PhysicsCollisionInfo info)
+ {
+ info = null;
+ return true;
+ }
+
+ #region 简略版的2D检测,忽略z轴
+
+ public static bool BallvsBall2D(PhysicsBall ball1, PhysicsBall ball2, out PhysicsCollisionInfo info)
+ {
+ info = null;
+ return true;
+ }
+
+ public static bool BoxvsBox2D(PhysicsBox box1, PhysicsBox box2, out PhysicsCollisionInfo info)
+ {
+ info = null;
+ return true;
+ }
+
+ public static bool BallvsBox2D(PhysicsBall ball, PhysicsBox box, out PhysicsCollisionInfo info)
+ {
+ info = null;
+ return true;
+ }
+ #endregion
+}
diff --git a/Assets/Scripts/Physics/PhysicsHelper.cs.meta b/Assets/Scripts/Physics/PhysicsHelper.cs.meta new file mode 100644 index 00000000..6259c4db --- /dev/null +++ b/Assets/Scripts/Physics/PhysicsHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5feab7ce586a9aa468329f97b89a69a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Physics/PhysicsPrimitive.cs b/Assets/Scripts/Physics/PhysicsPrimitive.cs new file mode 100644 index 00000000..b56467b2 --- /dev/null +++ b/Assets/Scripts/Physics/PhysicsPrimitive.cs @@ -0,0 +1,98 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 物理碰撞体基类
+/// 只需要Box和Ball两种
+/// </summary>
+public abstract class PhysicsPrimitive : MonoBehaviour
+{
+ [SerializeField]
+ /// <summary>
+ /// 这个primitive是否参与物理计算,用来快速给物体取消和恢复重力影响
+ /// </summary>
+ protected bool m_IsActive;
+ public bool IsActive
+ {
+ get
+ {
+ return m_IsActive;
+ }
+ }
+
+ /// <summary>
+ /// 这个primitive所属的物体
+ /// </summary>
+ protected Transform m_Parent;
+ public Transform Parent
+ {
+ get
+ {
+ return m_Parent;
+ }
+ }
+
+ /// <summary>
+ /// 唯一ID
+ /// </summary>
+ protected int m_ID;
+ public int ID
+ {
+ get
+ {
+ return m_ID;
+ }
+ }
+
+ [SerializeField]
+ protected PhysicsGroup m_Group;
+ public PhysicsGroup Group
+ {
+ get
+ {
+ return m_Group;
+ }
+ }
+
+ [SerializeField]
+ protected PhysicsTag m_Tag;
+ public PhysicsTag Tag
+ {
+ get
+ {
+ return m_Tag;
+ }
+ }
+
+
+ [SerializeField]
+ protected string m_Title;
+ public string Title
+ {
+ get
+ {
+ return m_Title;
+ }
+ }
+
+ [SerializeField]
+ protected string m_Desc;
+ public string Desc
+ {
+ get
+ {
+ return m_Desc;
+ }
+ }
+
+ /// <summary>
+ /// 初始化,设置一些公共数据
+ /// </summary>
+ protected void OnInit()
+ {
+ m_ID = UIDManager.Acquire();
+ m_Parent = transform;
+ }
+
+}
\ No newline at end of file diff --git a/Assets/Scripts/Physics/PhysicsPrimitive.cs.meta b/Assets/Scripts/Physics/PhysicsPrimitive.cs.meta new file mode 100644 index 00000000..725a8459 --- /dev/null +++ b/Assets/Scripts/Physics/PhysicsPrimitive.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf2b8ac8c3958a449891e20d634a76de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Physics/PhysicsUtils.cs b/Assets/Scripts/Physics/PhysicsUtils.cs deleted file mode 100644 index 752e15a5..00000000 --- a/Assets/Scripts/Physics/PhysicsUtils.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class PhysicsUtils : MonoBehaviour
-{
- // Start is called before the first frame update
- void Start()
- {
-
- }
-
- // Update is called once per frame
- void Update()
- {
-
- }
-}
diff --git a/Assets/Scripts/Physics/PhysicsWorld.cs b/Assets/Scripts/Physics/PhysicsWorld.cs index 4ceb4a37..085716d1 100644 --- a/Assets/Scripts/Physics/PhysicsWorld.cs +++ b/Assets/Scripts/Physics/PhysicsWorld.cs @@ -2,17 +2,35 @@ using System.Collections.Generic;
using UnityEngine;
-public class PhysicsWorld : MonoBehaviour
+/// <summary>
+/// 标记
+/// </summary>
+public enum PhysicsTag
{
- // Start is called before the first frame update
- void Start()
- {
-
- }
+ Player,
+ Oponent,
+}
+
+/// <summary>
+/// 分类
+/// </summary>
+public enum PhysicsGroup
+{
+ Character,
+ Environment,
+ Props,
+}
+
+/// <summary>
+/// 适用于战斗的物理系统
+/// </summary>
+public class PhysicsWorld : Singleton<PhysicsWorld>
+{
+ private int m_UpdateRate = 60;
- // Update is called once per frame
- void Update()
+ public void Update()
{
-
+
}
+
}
diff --git a/Assets/Scripts/Utils/Singleton.cs b/Assets/Scripts/Utils/Singleton.cs new file mode 100644 index 00000000..bdec31d3 --- /dev/null +++ b/Assets/Scripts/Utils/Singleton.cs @@ -0,0 +1,20 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+using System;
+
+public class Singleton<T> where T : class, new()
+{
+ private static T _instance;
+
+ public static T Instance
+ {
+ get
+ {
+ if (_instance == null)
+ _instance = Activator.CreateInstance<T>();
+ return _instance;
+ }
+ }
+}
\ No newline at end of file diff --git a/Assets/Scripts/Utils/Singleton.cs.meta b/Assets/Scripts/Utils/Singleton.cs.meta new file mode 100644 index 00000000..81c20c5a --- /dev/null +++ b/Assets/Scripts/Utils/Singleton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 47d828939d4273d478d2b48fee027c75 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |