diff options
author | chai <chaifix@163.com> | 2020-11-10 18:47:26 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-11-10 18:47:26 +0800 |
commit | de4941bb799df774f29857ce42a7c139050fa096 (patch) | |
tree | 281a1ac18ffe5682bb2f92eafdbe334b1d7f2632 /Assets/Scripts | |
parent | d21321d1e0d594ab247679cbfde86737aa24979c (diff) |
*hitmanager
Diffstat (limited to 'Assets/Scripts')
-rw-r--r-- | Assets/Scripts/Avatar/Avatar.cs | 5 | ||||
-rw-r--r-- | Assets/Scripts/Avatar/Avatar_Hurt.cs | 16 | ||||
-rw-r--r-- | Assets/Scripts/Avatar/Avatar_Hurt.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Avatar/HitDefination.cs | 36 | ||||
-rw-r--r-- | Assets/Scripts/Managers/HitManager.cs | 10 | ||||
-rw-r--r-- | Assets/Scripts/Test/ArmorSoldierScript.cs | 1 | ||||
-rw-r--r-- | Assets/Scripts/Test/SaionjiScript_Ability.cs | 14 |
7 files changed, 80 insertions, 13 deletions
diff --git a/Assets/Scripts/Avatar/Avatar.cs b/Assets/Scripts/Avatar/Avatar.cs index 03cceccb..c44af96c 100644 --- a/Assets/Scripts/Avatar/Avatar.cs +++ b/Assets/Scripts/Avatar/Avatar.cs @@ -6,7 +6,7 @@ using UnityEngine; /// <summary>
/// 角色,包括player和opponents
/// </summary>
-public class Avatar : MonoBehaviour, IInteractable
+public partial class Avatar : MonoBehaviour, IInteractable
{
public string Name;
@@ -106,6 +106,9 @@ public class Avatar : MonoBehaviour, IInteractable public virtual void OnHurt(HurtInfo hurtInfo)
{
//Debug.Log("Hurt");
+ HitDefination hitDef = hurtInfo.hitDef;
+ if (hitDef != null)
+ ApplyHit(hitDef);
m_AbilitySystem.OnHurt(hurtInfo);
}
diff --git a/Assets/Scripts/Avatar/Avatar_Hurt.cs b/Assets/Scripts/Avatar/Avatar_Hurt.cs new file mode 100644 index 00000000..f0cedffa --- /dev/null +++ b/Assets/Scripts/Avatar/Avatar_Hurt.cs @@ -0,0 +1,16 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public partial class Avatar : MonoBehaviour, IInteractable
+{
+ void ApplyHit(HitDefination hit)
+ {
+ if(hit.hurtAddForce.magnitude != 0)
+ {
+ m_Body.AddForce(hit.hurtAddForce);
+ }
+
+ }
+
+}
diff --git a/Assets/Scripts/Avatar/Avatar_Hurt.cs.meta b/Assets/Scripts/Avatar/Avatar_Hurt.cs.meta new file mode 100644 index 00000000..9b72c6ac --- /dev/null +++ b/Assets/Scripts/Avatar/Avatar_Hurt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8225de6932892342bf356e15bda0858 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Avatar/HitDefination.cs b/Assets/Scripts/Avatar/HitDefination.cs index 22a78325..db07a677 100644 --- a/Assets/Scripts/Avatar/HitDefination.cs +++ b/Assets/Scripts/Avatar/HitDefination.cs @@ -3,16 +3,40 @@ using System.Collections.Generic; using UnityEngine; /// <summary>
-/// 一个hit的效果,如果一个attack有多个hit,需要定义多个HitDef
+/// 攻击类型,对应不同的受击者反馈(动作)
/// </summary> -public class HitDefination -{ - public float start = 0f; - public float end = 1f; // 触发的开始和结束时间范围,用来处理一个attack多个hit的情况 +public enum HitType
+{
+ Light, // 轻击
+ Midium, // 中击
+ Heavy, // 重击
+ Ground, // 击倒
+ Air, // 击飞
+} - public int sparkID = 0; // 特效perfab ID +/// <summary>
+/// 一个hit的定义,如果一个attack有多个hit,需要定义多个HitDef
+/// </summary> +public class HitDefination +{
+ // 触发的开始和结束时间范围,用来处理一个attack多个hit的情况
+ public float start = 0f; + public float end = 1f;
+
+ public HitType type = HitType.Light; // 类型
+
+ // 特效
+ public string sparkName = string.Empty; // 特效 public Transform sparkHost = null; // 特效挂点 public Vector3 sparkPosition; // 特效位置(sparkHost为空时生效) public Quaternion sparkRotation; // 特效旋转 public Vector3 sparkScale = Vector3.one; // 特效缩放 + + // 相机反馈 + + // 攻击方反馈 + + // 受击方反馈 + public Vector3 hurtAddForce = Vector3.zero; + }
\ No newline at end of file diff --git a/Assets/Scripts/Managers/HitManager.cs b/Assets/Scripts/Managers/HitManager.cs index 2b198788..9ccb3b39 100644 --- a/Assets/Scripts/Managers/HitManager.cs +++ b/Assets/Scripts/Managers/HitManager.cs @@ -35,6 +35,16 @@ public class HitManager : Singleton<HitManager> m_HurtBoxes.Add(hurtbox);
}
+ public void RemoveHitBox(Hitbox hitbox)
+ {
+ m_HitBoxes.Remove(hitbox);
+ }
+
+ public void RemoveHurtBox(Hurtbox hurtbox)
+ {
+ m_HurtBoxes.Remove(hurtbox);
+ }
+
/// <summary>
/// 根据碰撞结果产生击中信息
/// </summary>
diff --git a/Assets/Scripts/Test/ArmorSoldierScript.cs b/Assets/Scripts/Test/ArmorSoldierScript.cs index b8afa8ee..b6863a23 100644 --- a/Assets/Scripts/Test/ArmorSoldierScript.cs +++ b/Assets/Scripts/Test/ArmorSoldierScript.cs @@ -40,7 +40,6 @@ public class ArmorSoldierScript : Avatar {
base.OnHurt(hurtInfo);
Hurt();
- m_Body.AddForce(new Vector3(1000, 2000,0));
} } diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs b/Assets/Scripts/Test/SaionjiScript_Ability.cs index ae211b89..5fc92f62 100644 --- a/Assets/Scripts/Test/SaionjiScript_Ability.cs +++ b/Assets/Scripts/Test/SaionjiScript_Ability.cs @@ -100,11 +100,16 @@ public partial class SaionjiScript : Avatar AttackAbility gun4 = new AttackAbility(animator, Anim_Gun4, m_Body);
AttackAbility airAttk1 = new AttackAbility(animator, Anim_AirAttack1, m_Body);
+ hitDef = new HitDefination
+ {
+ hurtAddForce = new Vector3(1000,2000,0)
+ };
+ airAttk1.AddHitDefination(hitDef);
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // actions
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ActionTurn180 turn180 = new ActionTurn180(this.transform);
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // actions
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ ActionTurn180 turn180 = new ActionTurn180(this.transform);
ActionTowardLeft towardLeft = new ActionTowardLeft(this.transform);
ActionTowardRight towardRight = new ActionTowardRight(this.transform);
@@ -393,7 +398,6 @@ public partial class SaionjiScript : Avatar airAttk1.AddTrigger(trigger);
trigger = new Trigger(new ConditionMotionAtEnd(animator, Anim_AirAttack1), new List<ActionBase> { new ActionSetVelocity(m_Body, Vector3.zero), new ActionUseGravity(m_Body), toJump});
airAttk1.AddTrigger(trigger);
- airAttk1.AddHitDefination(hitDef);
m_AbilitySystem.ForceStart(idle);
}
|