diff options
Diffstat (limited to 'Assets/Scripts')
6 files changed, 60 insertions, 8 deletions
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<FxClear>();
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);
|