From 7bd7b4c6c3be6840cab06aa4d8a38619bce44705 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 7 Sep 2021 19:39:28 +0800 Subject: *misc --- Assets/Scripts/Unit/Collider/ColliderBox_Hitbox.cs | 3 +++ .../Components/UnitAnimation/MonsterAnimation.cs | 10 +++++++- .../Unit/Components/UnitState/MonsterState.cs | 3 ++- .../Scripts/Unit/Controller/MonsterController.cs | 30 ++++++++++++++++++++-- Assets/Scripts/Unit/Controller/PCController.cs | 1 - Assets/Scripts/Unit/TimelineEventProxy.cs | 21 ++++++++++++--- 6 files changed, 60 insertions(+), 8 deletions(-) (limited to 'Assets/Scripts/Unit') diff --git a/Assets/Scripts/Unit/Collider/ColliderBox_Hitbox.cs b/Assets/Scripts/Unit/Collider/ColliderBox_Hitbox.cs index 00a5f036..a1455c6a 100644 --- a/Assets/Scripts/Unit/Collider/ColliderBox_Hitbox.cs +++ b/Assets/Scripts/Unit/Collider/ColliderBox_Hitbox.cs @@ -56,6 +56,9 @@ public partial class ColliderBox [Tooltip("击退距离")] public Vector3 hitBack; + [Tooltip("击退曲线")] + public AnimationCurve hitCurve; + [Comment("[ 击中效果 ]", TextAnchor.MiddleCenter)] [Foldout("时间效果", 2)] diff --git a/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs b/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs index f8786914..91583d34 100644 --- a/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs +++ b/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs @@ -21,7 +21,9 @@ public class MonsterAnimation : UnitAnimation HitLight, HitAir, - Rise, + HitBackHeavy, + + Rise, } public override void Initialize() @@ -84,12 +86,18 @@ public class MonsterAnimation : UnitAnimation this.Play(EAnimState.HitLight, 0, 0); //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); } + public void AnimHitAir() { this.Play(EAnimState.HitAir, 0, 0); //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); } + public void AnimHitBackHeavy() + { + this.Play(EAnimState.HitBackHeavy, 0, 0); + } + public void AnimRise() { this.CrossFade(EAnimState.Rise, 0); diff --git a/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs b/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs index a9ac0afb..1dba2b7d 100644 --- a/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs +++ b/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs @@ -108,7 +108,8 @@ public class MonsterState : UnitState IEnumerator HitLight(HitLightParam param) { - m_Owner.monsterAnimation.AnimHitLight(); + ((MonsterController)owner).FacePC(); + m_Owner.monsterAnimation.AnimHitBackHeavy(); yield return null; while (true) { diff --git a/Assets/Scripts/Unit/Controller/MonsterController.cs b/Assets/Scripts/Unit/Controller/MonsterController.cs index 9e7e7955..1f5e07c9 100644 --- a/Assets/Scripts/Unit/Controller/MonsterController.cs +++ b/Assets/Scripts/Unit/Controller/MonsterController.cs @@ -33,7 +33,7 @@ public class MonsterController : UnitController if(hitbox.hitResponse == ColliderBox.EHitResponse.Light) { - monsterState.ChangeState(MonsterState.EUnitState.HitLight, new MonsterState.HitLightParam()); + monsterState.ChangeState(MonsterState.EUnitState.HitLight, new MonsterState.HitLightParam(), true); } else if(hitbox.hitResponse == ColliderBox.EHitResponse.HitAir) { @@ -52,8 +52,34 @@ public class MonsterController : UnitController public override void OnGetShot(CollisionInfo info) { - monsterState.ChangeState(MonsterState.EUnitState.HitLight, new MonsterState.HitLightParam()); + monsterState.ChangeState(MonsterState.EUnitState.HitLight, new MonsterState.HitLightParam(), true); } + public virtual bool IsFacePC() + { + PCController pc = PCController.instance; + float pcX = pc.transform.position.x; + float x = transform.position.x; + bool isface = pcX > x && isTowardRight || pcX <= x && !isTowardRight; + return isface; + } + + // 朝向PC + public virtual void FacePC() + { + if (IsFacePC()) + return; + PCController pc = PCController.instance; + float pcX = pc.transform.position.x; + float x = transform.position.x; + if (pcX > x) + { + transform.rotation = Quaternion.Euler(0, 0, 0); + } + else + { + transform.rotation = Quaternion.Euler(0, 180, 0); + } + } } \ No newline at end of file diff --git a/Assets/Scripts/Unit/Controller/PCController.cs b/Assets/Scripts/Unit/Controller/PCController.cs index ba12b3f5..851fb80a 100644 --- a/Assets/Scripts/Unit/Controller/PCController.cs +++ b/Assets/Scripts/Unit/Controller/PCController.cs @@ -53,5 +53,4 @@ public class PCController : UnitController { } - } diff --git a/Assets/Scripts/Unit/TimelineEventProxy.cs b/Assets/Scripts/Unit/TimelineEventProxy.cs index 2c5bf608..a8918e39 100644 --- a/Assets/Scripts/Unit/TimelineEventProxy.cs +++ b/Assets/Scripts/Unit/TimelineEventProxy.cs @@ -169,7 +169,15 @@ public partial class TimelineEventProxy go.transform.SetParent(root.transform); FxClear onClear = root.AddComponent(); onClear.gameObject.name = prefab.name + "(Clone)"; - onClear.Initialize(new PlayEffectInfo(path, EffectPlayTypes.Oneshot, m_Root, effect.position, effect.rotation, effect.scale, 0, false)); + if(owner != null) + { + Quaternion rot = owner.transform.rotation * Quaternion.Euler(effect.rotation); + onClear.Initialize(new PlayEffectInfo(path, EffectPlayTypes.Oneshot, m_Root, effect.position, rot.eulerAngles, effect.scale, 0, false)); + } + else + { + onClear.Initialize(new PlayEffectInfo(path, EffectPlayTypes.Oneshot, m_Root, effect.position, effect.rotation, effect.scale, 0, false)); + } #if UNITY_EDITOR if (isInEditMode && registerParticleSystem != null) { @@ -214,8 +222,15 @@ public partial class TimelineEventProxy info.position = m_Root.transform.position + e.posOffset; info.rotation = e.rotation; info.scale = e.scale; - info.velocity = e.velocity; - info.acceleration = e.acceleration; + if (owner) + { + info.velocity = owner.transform.rotation * e.velocity; + } + else + { + info.velocity = e.velocity; + } + info.acceleration = e.acceleration; info.lifetime = e.lifeTime; info.sparkPath = e.sparkPath; projectile.Initialize(info); -- cgit v1.1-26-g67d0