diff options
Diffstat (limited to 'Assets/Scripts')
22 files changed, 345 insertions, 101 deletions
diff --git a/Assets/Scripts/ApplicationMain.cs b/Assets/Scripts/ApplicationMain.cs index 69791549..99209c50 100644 --- a/Assets/Scripts/ApplicationMain.cs +++ b/Assets/Scripts/ApplicationMain.cs @@ -15,13 +15,13 @@ public class ApplicationMain : MonoBehaviour void Update() { InputManager.Instance.Update();
- AbilitySystem.Update(); + AvatarManager.Instance.OnUpdate();
} private void LateUpdate()
{
PhysicsWorld.Instance.Update();
- AbilitySystem.LateUpdate();
+ AvatarManager.Instance.OnLateUpdate();
} private void OnDrawGizmos()
diff --git a/Assets/Scripts/Avatar/Abilities/AbilityBase.cs b/Assets/Scripts/Avatar/Abilities/AbilityBase.cs index 8b1a5549..28f0e8d6 100644 --- a/Assets/Scripts/Avatar/Abilities/AbilityBase.cs +++ b/Assets/Scripts/Avatar/Abilities/AbilityBase.cs @@ -52,12 +52,12 @@ public abstract class AbilityBase /// <summary>
/// 检测到hitbox碰撞时的回调
/// </summary>
- public virtual void OnHit() { }
+ public virtual void OnHit(PhysicsCollisionInfo info) { }
/// <summary>
/// 检测到hurtbox碰撞时的回调
/// </summary>
- public virtual void OnHurt() { }
+ public virtual void OnHurt(PhysicsCollisionInfo info) { }
/// <summary>
/// 检测到defendbox碰撞时的回调
diff --git a/Assets/Scripts/Avatar/Abilities/AttackAbility.cs b/Assets/Scripts/Avatar/Abilities/AttackAbility.cs index 117dca7e..38c5d62f 100644 --- a/Assets/Scripts/Avatar/Abilities/AttackAbility.cs +++ b/Assets/Scripts/Avatar/Abilities/AttackAbility.cs @@ -80,6 +80,11 @@ public class AttackAbility : AbilityBase {
m_Config.body.LocalVelocity = m_Config.velocity;
}
+
+ foreach(var hit in m_HitInfo)
+ {
+ hit.WipeRecords();
+ }
}
public override void OnExit()
@@ -87,11 +92,30 @@ public class AttackAbility : AbilityBase m_TimeCount = 0;
}
- public override void OnHit()
+ public override void OnHit(PhysicsCollisionInfo info)
{
+ Avatar avatar = info.prim2.GetComponentInParent<Avatar>();
+ if (avatar == null)
+ return;
+ for (int i = 0; i < m_HitInfo.Count; ++i)
+ {
+ HitInfo hitInfo = m_HitInfo[i];
+ if(!hitInfo.HasRecord(avatar))
+ {
+ hitInfo.AddRecord(avatar);
+ Debug.Log("hit " + avatar.Name);
+ PhysicsBody body = avatar.Body;
+ body.AddForce(new Vector3(3000, 0, 0));
+ if(avatar is ArmorSoldierScript)
+ {
+ ArmorSoldierScript solider = avatar as ArmorSoldierScript;
+ solider.Hurt();
+ }
+ }
+ }
}
- public override void OnHurt()
+ public override void OnHurt(PhysicsCollisionInfo info)
{
}
@@ -137,4 +161,11 @@ public class AttackAbility : AbilityBase m_LateTriggers.Add(trigger);
}
+ public void AddHitDefination(HitDefination defination)
+ {
+ HitInfo info = new HitInfo();
+ info.defination = defination;
+ m_HitInfo.Add(info);
+ }
+
}
diff --git a/Assets/Scripts/Avatar/Abilities/MoveAbility.cs b/Assets/Scripts/Avatar/Abilities/MoveAbility.cs index 757cd2d1..cf9fa106 100644 --- a/Assets/Scripts/Avatar/Abilities/MoveAbility.cs +++ b/Assets/Scripts/Avatar/Abilities/MoveAbility.cs @@ -37,14 +37,6 @@ public class MoveAbility : AbilityBase {
}
- public override void OnHit()
- {
- }
-
- public override void OnHurt()
- {
- }
-
public override void OnTranslate(AbilityBase to)
{
}
diff --git a/Assets/Scripts/Avatar/AbilitySystem.cs b/Assets/Scripts/Avatar/AbilitySystem.cs index 46156c55..024e73cb 100644 --- a/Assets/Scripts/Avatar/AbilitySystem.cs +++ b/Assets/Scripts/Avatar/AbilitySystem.cs @@ -7,8 +7,6 @@ using UnityEngine; /// </summary> public class AbilitySystem { - private static List<AbilitySystem> AbilitySystems = new List<AbilitySystem>(); - /// <summary> /// 当前执行的ability /// </summary> @@ -26,23 +24,6 @@ public class AbilitySystem public AbilitySystem() { - AbilitySystems.Add(this); - } - - public static void Update() - { - foreach(var systems in AbilitySystems) - { - systems.OnUpdate(); - } - } - - public static void LateUpdate() - { - foreach (var systems in AbilitySystems) - { - systems.OnLateUpdate(); - } } public void ForceStart(AbilityBase ability) @@ -76,10 +57,24 @@ public class AbilitySystem { m_Currrent.OnLateUpdate(); } - } - - - public void SwitchToAbility(AbilityBase targetAbility) + }
+
+ public void OnHit(PhysicsCollisionInfo info)
+ {
+ if(m_Currrent != null)
+ {
+ m_Currrent.OnHit(info);
+ }
+ } + public void OnHurt(PhysicsCollisionInfo info)
+ {
+ if (m_Currrent != null)
+ {
+ m_Currrent.OnHurt(info);
+ }
+ } +
+ public void SwitchToAbility(AbilityBase targetAbility) { if (m_Currrent != null) m_Currrent.OnExit(); diff --git a/Assets/Scripts/Avatar/Actions/ActionEffects.meta b/Assets/Scripts/Avatar/Actions/ActionEffects.meta new file mode 100644 index 00000000..17a426dd --- /dev/null +++ b/Assets/Scripts/Avatar/Actions/ActionEffects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b5ccfefc2e6b104a8566f4da9a16c5f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Avatar/Avatar.cs b/Assets/Scripts/Avatar/Avatar.cs index 47d8c4b7..a8d90fa7 100644 --- a/Assets/Scripts/Avatar/Avatar.cs +++ b/Assets/Scripts/Avatar/Avatar.cs @@ -8,18 +8,34 @@ using UnityEngine; /// </summary>
public class Avatar : MonoBehaviour, IInteractable
{
+ public string Name;
-
+ // 一个角色包括一个身体的collider和若干hitbox和hurtbox
public PhysicsBody m_Body; public PhysicsBox m_BodyCollider;
public PhysicsBox[] m_Hitbox;
public PhysicsBox[] m_Hurtbox;
+ protected AbilitySystem m_AbilitySystem = new AbilitySystem();
+
+ public PhysicsBody Body
+ {
+ get
+ {
+ return m_Body;
+ }
+ }
+
public PhysicsPrimitive[] GetAllPrimitive()
{
throw new System.NotImplementedException();
}
+ protected void Init()
+ {
+ AvatarManager.Instance.AddAvatar(this);
+ }
+
public PhysicsBox GetHitbox()
{
throw new System.NotImplementedException();
@@ -59,4 +75,60 @@ public class Avatar : MonoBehaviour, IInteractable return false;
}
+ public void OnUpdate()
+ {
+ m_AbilitySystem.OnUpdate();
+ }
+
+ // 在物理模拟之后调用
+ public void OnLateUpdate()
+ {
+ // hitbox
+ for(int i = 0;i < m_Hitbox.Length; ++i)
+ {
+ PhysicsBox hitbox = m_Hitbox[i];
+ if (hitbox == null || !hitbox.IsActive)
+ continue;
+ for(int j = 0;j < PhysicsWorld.Instance.Collisions.Count; ++j)
+ {
+ PhysicsCollisionInfo info = PhysicsWorld.Instance.Collisions[j];
+ if(info.prim1 == hitbox)
+ {
+ m_AbilitySystem.OnHit(info);
+ }
+ else if(info.prim2 == hitbox)
+ {
+ PhysicsPrimitive temp = info.prim1;
+ info.prim1 = info.prim2;
+ info.prim2 = temp;
+ m_AbilitySystem.OnHit(info);
+ }
+ }
+ }
+ // hurtbox
+ for (int i = 0; i < m_Hurtbox.Length; ++i)
+ {
+ PhysicsBox hurtbox = m_Hurtbox[i];
+ if (hurtbox == null || !hurtbox.IsActive)
+ continue;
+ for (int j = 0; j < PhysicsWorld.Instance.Collisions.Count; ++j)
+ {
+ PhysicsCollisionInfo info = PhysicsWorld.Instance.Collisions[j];
+ if (info.prim1 == hurtbox)
+ {
+ m_AbilitySystem.OnHurt(info);
+ }
+ else if(info.prim2 == hurtbox)
+ {
+ PhysicsPrimitive temp = info.prim1;
+ info.prim1 = info.prim2;
+ info.prim2 = temp;
+ m_AbilitySystem.OnHurt(info);
+ }
+ }
+ }
+
+ m_AbilitySystem.OnLateUpdate();
+ }
+
}
diff --git a/Assets/Scripts/Avatar/HitDefination.cs b/Assets/Scripts/Avatar/HitDefination.cs index 1f622b32..96ceaf00 100644 --- a/Assets/Scripts/Avatar/HitDefination.cs +++ b/Assets/Scripts/Avatar/HitDefination.cs @@ -8,11 +8,11 @@ public class HitDefination public float start = 0f; public float end = 1f; // 触发的开始和结束时间范围,用来处理一个attack多个hit的情况 - public int effectID = 0; // 特效 - public Transform effectHost = null; // 特效挂点 - public Vector3 effectPosition; // 特效位置(effectHost为空时生效) - public Quaternion effectRotation; // 特效旋转 - public Vector3 effectScale = Vector3.one; // 特效缩放 + public int sparkID = 0; // 特效perfab ID + public Transform sparkHost = null; // 特效挂点 + public Vector3 sparkPosition; // 特效位置(sparkHost为空时生效) + public Quaternion sparkRotation; // 特效旋转 + public Vector3 sparkScale = Vector3.one; // 特效缩放 }
\ No newline at end of file diff --git a/Assets/Scripts/Avatar/HitInfo.cs b/Assets/Scripts/Avatar/HitInfo.cs index bdb116eb..8d24f6ee 100644 --- a/Assets/Scripts/Avatar/HitInfo.cs +++ b/Assets/Scripts/Avatar/HitInfo.cs @@ -9,11 +9,11 @@ public class HitInfo /// <summary> /// 记录这个hit命中的avatar /// </summary> - private List<Avatar> m_HitAvatars; + private List<Avatar> m_HitAvatars = new List<Avatar>(); public void AddRecord(Avatar avatar) { - if (m_HitAvatars.Contains(avatar)) + if (!m_HitAvatars.Contains(avatar)) m_HitAvatars.Add(avatar); } @@ -22,4 +22,10 @@ public class HitInfo { m_HitAvatars.Clear(); } + + public bool HasRecord(Avatar avatar)
+ {
+ return m_HitAvatars.Contains(avatar);
+ } + } diff --git a/Assets/Scripts/Managers.meta b/Assets/Scripts/Managers.meta index 08725b58..42a571fb 100644 --- a/Assets/Scripts/Managers.meta +++ b/Assets/Scripts/Managers.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8fa7e6d20cdfaee42b39f1c7f5b5afd6 +guid: ffa677f9a3f3e5a49be1487a5a522911 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/Managers/AvatarManager.cs b/Assets/Scripts/Managers/AvatarManager.cs new file mode 100644 index 00000000..4cb3cb7f --- /dev/null +++ b/Assets/Scripts/Managers/AvatarManager.cs @@ -0,0 +1,30 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class AvatarManager : Singleton<AvatarManager>
+{
+ private List<Avatar> m_Avatars = new List<Avatar>();
+
+ public void AddAvatar(Avatar avatar)
+ {
+ m_Avatars.Add(avatar);
+ }
+
+ public void OnUpdate()
+ {
+ foreach (var avatar in m_Avatars)
+ {
+ avatar.OnUpdate();
+ }
+ }
+
+ public void OnLateUpdate()
+ {
+ foreach(var avatar in m_Avatars)
+ {
+ avatar.OnLateUpdate();
+ }
+ }
+
+}
diff --git a/Assets/Scripts/Managers/AvatarManager.cs.meta b/Assets/Scripts/Managers/AvatarManager.cs.meta new file mode 100644 index 00000000..a130d1a3 --- /dev/null +++ b/Assets/Scripts/Managers/AvatarManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be28f7eef9edbed4ea13fd6f474cacb8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Managers/ResourceManager.cs b/Assets/Scripts/Managers/ResourceManager.cs new file mode 100644 index 00000000..858ad345 --- /dev/null +++ b/Assets/Scripts/Managers/ResourceManager.cs @@ -0,0 +1,18 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ResourceManager : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Assets/Scripts/Managers/ResourceManager.cs.meta b/Assets/Scripts/Managers/ResourceManager.cs.meta new file mode 100644 index 00000000..98c1315c --- /dev/null +++ b/Assets/Scripts/Managers/ResourceManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 55ea2b1da79987e459caa3fbb6bd096a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Physics/PhysicsBody.cs b/Assets/Scripts/Physics/PhysicsBody.cs index 4077696a..68f9dec3 100644 --- a/Assets/Scripts/Physics/PhysicsBody.cs +++ b/Assets/Scripts/Physics/PhysicsBody.cs @@ -112,17 +112,24 @@ public sealed class PhysicsBody : MonoBehaviour get { return m_Frication; }
}
- //[Tooltip("空气摩擦力")]
- //[SerializeField]
- //private Vector3 m_AirFriction;
- //public Vector3 AirFriction
- //{
- // get { return m_AirFriction; }
- //}
-
- [Tooltip("力")]
+ [Tooltip("空气摩擦力")]
+ [SerializeField]
+ private float m_AirFriction;
+ public float AirFriction
+ {
+ get { return m_AirFriction; }
+ }
+
+ [Tooltip("力")]
[SerializeField]
private Vector3 m_Force;
+ public Vector3 Force
+ {
+ get
+ {
+ return m_Force;
+ }
+ }
[SerializeField]
private PhysicsPrimitive m_Primitive;
diff --git a/Assets/Scripts/Physics/PhysicsHelper.cs b/Assets/Scripts/Physics/PhysicsHelper.cs index 821241e3..44bf513e 100644 --- a/Assets/Scripts/Physics/PhysicsHelper.cs +++ b/Assets/Scripts/Physics/PhysicsHelper.cs @@ -19,6 +19,7 @@ public struct PhysicsCollisionInfo public PhysicsPrimitive prim1;
public PhysicsPrimitive prim2;
public Vector3 contact;
+ public Vector3 size;
}
public sealed class PhysicsHelper
@@ -63,6 +64,7 @@ public sealed class PhysicsHelper float top = Mathf.Min(box1.Top, box2.Top);
float bottom = Mathf.Max(box1.Bottom, box2.Bottom);
info.contact = new Vector3((left + right )/2f, (top + bottom)/2f, 0 );
+ info.size = new Vector3(right - left, top - bottom, 1);
return true;
}
diff --git a/Assets/Scripts/Physics/PhysicsPrimitive.cs b/Assets/Scripts/Physics/PhysicsPrimitive.cs index 26fb5aa9..c94aee1a 100644 --- a/Assets/Scripts/Physics/PhysicsPrimitive.cs +++ b/Assets/Scripts/Physics/PhysicsPrimitive.cs @@ -185,4 +185,12 @@ public abstract class PhysicsPrimitive : MonoBehaviour }
}
+ public bool IsInAir
+ {
+ get
+ {
+ return Bound.w > PhysicsWorld.Ground;
+ }
+ }
+
}
\ No newline at end of file diff --git a/Assets/Scripts/Physics/PhysicsWorld.cs b/Assets/Scripts/Physics/PhysicsWorld.cs index 41ea59f8..ba9b1bc1 100644 --- a/Assets/Scripts/Physics/PhysicsWorld.cs +++ b/Assets/Scripts/Physics/PhysicsWorld.cs @@ -43,7 +43,7 @@ public class PhysicsWorld : Singleton<PhysicsWorld> private const int _ = 0;
private readonly int[] m_CollisionTable = {
// hurtbox hitBox wall ground prop character
-/*character*/ 0, 0, 1, 1, 1, 0,
+/*character*/ 0, 0, 1, 1, 1, 1,
/*prop */ 0, 0, 1, 1, 0, _,
/*ground */ 0, 0, 0, 0, _, _,
/*wall */ 0, 0, 0, _, _, _,
@@ -59,6 +59,15 @@ public class PhysicsWorld : Singleton<PhysicsWorld> public const float Ground = 0.1f;
+ // 所有碰撞
+ public List<PhysicsCollisionInfo> Collisions
+ {
+ get
+ {
+ return m_CollisionInfo;
+ }
+ }
+
public void Init()
{
m_TimeCount = Time.time;
@@ -184,13 +193,13 @@ public class PhysicsWorld : Singleton<PhysicsWorld> {
PhysicsPrimitive prim2 = m_Primitives[j];
- // check collision by group
+ // group
int minGroup = Mathf.Min((int)prim1.Group, (int)prim2.Group);
int maxGroup = Mathf.Max((int)prim1.Group, (int)prim2.Group);
if (m_CollisionTable[minGroup * groupCount + groupCount - maxGroup - 1] == 0)
continue;
- // check collision by label
+ // label
if (prim1.Label == prim2.Label)
continue;
@@ -220,11 +229,17 @@ public class PhysicsWorld : Singleton<PhysicsWorld> velocity += m_Gravity * dt;
body.Velocity = velocity;
- position += velocity * dt;
+ // impluse = d(mv) = m*dv
+ Vector3 impluse = body.Force * dt;
+ Vector3 deltaV = impluse / body.Weight;
+ velocity += deltaV;
+ body.Velocity = velocity;
- body.transform.position = position;
+ position += velocity * dt;
+
+ body.transform.position = position;
- if(prim.IsOnGround)
+ if (prim.IsOnGround)
{
// pos=0, Vy=0
position.y = 0.1f;
@@ -241,11 +256,32 @@ public class PhysicsWorld : Singleton<PhysicsWorld> velocity.y = 0;
body.Velocity = velocity;
}
+ else if(prim.IsInAir) // 空气摩擦力
+ {
+ if(body.Velocity.x != 0 && body.AirFriction != 0)
+ {
+ float dv = body.AirFriction * dt;
+ dv = Mathf.Min(dv, Mathf.Abs(body.Velocity.x));
+ dv = body.Velocity.x > 0 ? -dv : dv;
+ velocity.x += dv;
+ body.Velocity = velocity;
+ }
+ }
+
+ body.SetForce(Vector3.zero);
}
void SolveCollision(PhysicsPrimitive prim, PhysicsCollisionInfo collision, float dt)
{
- return;
+ PhysicsPrimitive other = collision.prim1 == prim ? collision.prim2 : collision.prim1;
+ if(prim.Body != null && other.Body != null)
+ {
+ Vector3 pos = prim.Body.transform.position;
+ pos.x += pos.x > collision.contact.x ? collision.size.x / 2f : - collision.size.x / 2f;
+ prim.Body.transform.position = pos;
+ }
+
+ return;
PhysicsBody body = prim.Body;
if (body == null)
diff --git a/Assets/Scripts/Props.meta b/Assets/Scripts/Props.meta new file mode 100644 index 00000000..bb96602e --- /dev/null +++ b/Assets/Scripts/Props.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f299520ed9fcf4a45858ad4ef5a8d5d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Test/ArmorSoldierScript.cs b/Assets/Scripts/Test/ArmorSoldierScript.cs index e4b051e1..924d7874 100644 --- a/Assets/Scripts/Test/ArmorSoldierScript.cs +++ b/Assets/Scripts/Test/ArmorSoldierScript.cs @@ -2,21 +2,17 @@ using System.Collections.Generic; using UnityEngine; -public class ArmorSoldierScript : MonoBehaviour +public class ArmorSoldierScript : Avatar { - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } + int Anim_HurtFront; - private void OnAnimatorMove() + private void Start()
+ {
+ base.Init();
+ Anim_HurtFront = Animator.StringToHash("Hurt_Front");
+ }
+
+ private void OnAnimatorMove() { Animator animator = GetComponent<Animator>(); @@ -34,4 +30,10 @@ public class ArmorSoldierScript : MonoBehaviour } } + public void Hurt()
+ {
+ Animator animator = GetComponent<Animator>(); + animator.CrossFade(Anim_HurtFront, 0);
+ } + } diff --git a/Assets/Scripts/Test/SaionjiScript.cs b/Assets/Scripts/Test/SaionjiScript.cs index 10f2e9e3..90e4a7e0 100644 --- a/Assets/Scripts/Test/SaionjiScript.cs +++ b/Assets/Scripts/Test/SaionjiScript.cs @@ -21,6 +21,8 @@ public partial class SaionjiScript : Avatar // Start is called before the first frame update
void Start()
{
+ base.Init();
+
animator = GetComponent<Animator>();
//animator.speed = 0;
PhysicsWorld.Instance.AddAnimator(animator);
@@ -35,11 +37,11 @@ public partial class SaionjiScript : Avatar SetupAbilities();
}
- private void Update()
- {
- //if (EnableAbilitySystem)
- // m_AbilitySystem.OnUpdate();
- }
+ //private void Update()
+ //{
+ // //if (EnableAbilitySystem)
+ // // m_AbilitySystem.OnUpdate();
+ //}
// 更新顺序:
// internal animator update -> OnAnimatorMove() -> physics
@@ -57,7 +59,7 @@ public partial class SaionjiScript : Avatar if(stateInfo.IsTag("IgnoreRootMotion"))
{
// ignore root motion
- Debug.Log("ignore root motion ");
+ //Debug.Log("ignore root motion ");
}
else
{
diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs b/Assets/Scripts/Test/SaionjiScript_Ability.cs index 8934b5da..d8233f56 100644 --- a/Assets/Scripts/Test/SaionjiScript_Ability.cs +++ b/Assets/Scripts/Test/SaionjiScript_Ability.cs @@ -4,10 +4,6 @@ using UnityEngine; public partial class SaionjiScript : Avatar
{
- /// <summary>
- /// ability system
- /// </summary>
- AbilitySystem m_AbilitySystem = new AbilitySystem();
ConditionBase Not(ConditionBase cond)
{
@@ -19,7 +15,6 @@ public partial class SaionjiScript : Avatar return new ConditionAnd(c1, c2);
}
-
ConditionBase Ands(params ConditionBase[] cond)
{
List<ConditionBase> conditions = new List<ConditionBase>();
@@ -71,13 +66,21 @@ public partial class SaionjiScript : Avatar AttackAbilityConfig config;
- //招式会绑定一个motion
+ //招式会绑定一个motion
+ HitDefination hitDef = new HitDefination
+ {
+ };
AttackAbility attk1 = new AttackAbility(animator, Anim_LightAttack1, m_Body);
- AttackAbility attk2 = new AttackAbility(animator, Anim_LightAttack2, m_Body);
- AttackAbility attk3 = new AttackAbility(animator, Anim_LightAttack3, m_Body);
- AttackAbility attk4 = new AttackAbility(animator, Anim_LightAttack4, m_Body);
- AttackAbility attk5 = new AttackAbility(animator, Anim_LightAttack5, m_Body);
- AttackAbility attkRush = new AttackAbility(animator, Anim_LightAttackRush, m_Body);
+ attk1.AddHitDefination(hitDef);
+ AttackAbility attk2 = new AttackAbility(animator, Anim_LightAttack2, m_Body);
+ attk2.AddHitDefination(hitDef);
+ AttackAbility attk3 = new AttackAbility(animator, Anim_LightAttack3, m_Body);
+ attk3.AddHitDefination(hitDef);
+ AttackAbility attk4 = new AttackAbility(animator, Anim_LightAttack4, m_Body);
+ attk4.AddHitDefination(hitDef);
+ AttackAbility attk5 = new AttackAbility(animator, Anim_LightAttack5, m_Body);
+ attk5.AddHitDefination(hitDef);
+ AttackAbility attkRush = new AttackAbility(animator, Anim_LightAttackRush, m_Body);
config = new AttackAbilityConfig() {
animator = this.animator,
@@ -164,7 +167,7 @@ public partial class SaionjiScript : Avatar ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// idle ability
- trigger = new Trigger(condUpCmd, toJump) ;
+ trigger = new Trigger(condTriangleCmd, toJump) ;
idle.AddTrigger(trigger);
trigger = new Trigger(And(condTowardRight, condDRC), new List<ActionBase> { wipeCmdRecord, switchToSuperKick });
idle.AddTrigger(trigger);
@@ -187,10 +190,12 @@ public partial class SaionjiScript : Avatar idle.AddTrigger(triggerTurnRight);
idle.AddTrigger(triggerTurnLeft);
- // move ability
- trigger = new Trigger(Or(Ands(condRightButtonHold, condTowardRight, condUpCmd), Ands(condLeftButtonHold, condTowardLeft, condUpCmd)), toJumpForward);
- move.AddTrigger(trigger);
- trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash, });
+ // move ability
+ //trigger = new Trigger(Or(Ands(condRightButtonHold, condTowardRight, condTriangleCmd), Ands(condLeftButtonHold, condTowardLeft, condTriangleCmd)), toJumpForward);
+ //move.AddTrigger(trigger);
+ trigger = new Trigger(condTriangleCmd, toJump);
+ move.AddTrigger(trigger);
+ trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash, });
move.AddTrigger(trigger);
trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash });
move.AddTrigger(trigger);
@@ -217,8 +222,8 @@ public partial class SaionjiScript : Avatar jump.AddTrigger(trigger);
trigger = new Trigger(And(condLeftButtonHold, condCheckJump), new List<ActionBase> { towardLeft, new ActionSetVelocityX(m_Body,-4) }, TriggerOnlyOnce.Off, TriggerSwallow.Off);
jump.AddTrigger(trigger);
- trigger = new Trigger(Ands(condCheckJump, Not(condRightButtonHold), Not(condLeftButtonHold)), new ActionSetVelocityX(m_Body, 0), TriggerOnlyOnce.Off, TriggerSwallow.Off);
- jump.AddTrigger(trigger);
+ //trigger = new Trigger(Ands(condCheckJump, Not(condRightButtonHold), Not(condLeftButtonHold)), new ActionSetVelocityX(m_Body, 0), TriggerOnlyOnce.Off, TriggerSwallow.Off);
+ //jump.AddTrigger(trigger);
trigger = new Trigger(condJumpOnGround, new ActionSetVelocity(m_Body, Vector3.zero), TriggerOnlyOnce.On, TriggerSwallow.Off);
jump.AddTrigger(trigger);
trigger = new Trigger(Ands(new ConditionJumpDone(jump, 0.4f), condJumpOnGround, Or(condRightButtonHold, condLeftButtonHold)), switchToMove);
@@ -244,8 +249,8 @@ public partial class SaionjiScript : Avatar attk1.AddTrigger(trigger);
attk1.AddTrigger(triggerTurnRight);
attk1.AddTrigger(triggerTurnLeft);
- trigger = new Trigger(condIsHit, new ActionLog("hit!!!"));
- attk1.AddLateTrigger(trigger);
+ //trigger = new Trigger(condIsHit, new ActionLog("hit!!!"));
+ //attk1.AddLateTrigger(trigger);
//ConditionMotionRange condAttkRushGhostRange = new ConditionMotionRange(animator, 0f, 0.8f);
//trigger = new Trigger(condAttkRushGhostRange, enableGhost, false);
|