summaryrefslogtreecommitdiff
path: root/Assets/Scripts
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-11-10 18:47:26 +0800
committerchai <chaifix@163.com>2020-11-10 18:47:26 +0800
commitde4941bb799df774f29857ce42a7c139050fa096 (patch)
tree281a1ac18ffe5682bb2f92eafdbe334b1d7f2632 /Assets/Scripts
parentd21321d1e0d594ab247679cbfde86737aa24979c (diff)
*hitmanager
Diffstat (limited to 'Assets/Scripts')
-rw-r--r--Assets/Scripts/Avatar/Avatar.cs5
-rw-r--r--Assets/Scripts/Avatar/Avatar_Hurt.cs16
-rw-r--r--Assets/Scripts/Avatar/Avatar_Hurt.cs.meta11
-rw-r--r--Assets/Scripts/Avatar/HitDefination.cs36
-rw-r--r--Assets/Scripts/Managers/HitManager.cs10
-rw-r--r--Assets/Scripts/Test/ArmorSoldierScript.cs1
-rw-r--r--Assets/Scripts/Test/SaionjiScript_Ability.cs14
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);
}