summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Unit
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-09-07 19:39:28 +0800
committerchai <chaifix@163.com>2021-09-07 19:39:28 +0800
commit7bd7b4c6c3be6840cab06aa4d8a38619bce44705 (patch)
treea506a26500ef06f99467760d7039f79cd0129cc6 /Assets/Scripts/Unit
parent3f276efcac68e0603258fba2dcb751329690ba87 (diff)
*misc
Diffstat (limited to 'Assets/Scripts/Unit')
-rw-r--r--Assets/Scripts/Unit/Collider/ColliderBox_Hitbox.cs3
-rw-r--r--Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs10
-rw-r--r--Assets/Scripts/Unit/Components/UnitState/MonsterState.cs3
-rw-r--r--Assets/Scripts/Unit/Controller/MonsterController.cs30
-rw-r--r--Assets/Scripts/Unit/Controller/PCController.cs1
-rw-r--r--Assets/Scripts/Unit/TimelineEventProxy.cs21
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);