Commit 8a6d3447 authored by 15김민규's avatar 15김민규

일정 체력 분기 때 넉백 하는 것 구현. 저 은퇴해도 되나요

parent cfa04ecd
...@@ -65,11 +65,4 @@ AnimationClip: ...@@ -65,11 +65,4 @@ AnimationClip:
m_HasGenericRootTransform: 0 m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0 m_HasMotionFloatCurves: 0
m_GenerateMotionCurves: 0 m_GenerateMotionCurves: 0
m_Events: m_Events: []
- time: 0
functionName: aaa
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
...@@ -289,17 +289,18 @@ MonoBehaviour: ...@@ -289,17 +289,18 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 2d73d07fdab522c4aa045e1cb6a92e8c, type: 3} m_Script: {fileID: 11500000, guid: 2d73d07fdab522c4aa045e1cb6a92e8c, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
debuffState:
fireDuration: 0
monsterID: 117 monsterID: 117
maxHealth: 55 maxHealth: 10
weight: 10 weight: 10
patrolRange: 2 patrolRange: 2
noticeRange: 2 noticeRange: 2
attackRange: 1 attackRange: 1
patrolSpeed: 1.5 patrolSpeed: 1.5
trackSpeed: 2.5 trackSpeed: 2.5
currHealth: 0 knockbackPercentage:
- 0.75
- 0.5
- 0.25
--- !u!114 &114173716467154830 --- !u!114 &114173716467154830
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -311,7 +312,7 @@ MonoBehaviour: ...@@ -311,7 +312,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 31d57aad92e0a1940b2258c8b7537027, type: 3} m_Script: {fileID: 11500000, guid: 31d57aad92e0a1940b2258c8b7537027, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
pushForce: 0.01 pushForce: 0
--- !u!114 &114468655689627186 --- !u!114 &114468655689627186
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -323,7 +324,7 @@ MonoBehaviour: ...@@ -323,7 +324,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 908a1b16b9926f747807d321c5ecc8af, type: 3} m_Script: {fileID: 11500000, guid: 908a1b16b9926f747807d321c5ecc8af, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
damage: 4 damage: 3
--- !u!114 &114851997656688694 --- !u!114 &114851997656688694
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
......
...@@ -1870,7 +1870,7 @@ Prefab: ...@@ -1870,7 +1870,7 @@ Prefab:
- target: {fileID: 114402380471012178, guid: 3d077a5f727dd1e4780e9265ed26e036, - target: {fileID: 114402380471012178, guid: 3d077a5f727dd1e4780e9265ed26e036,
type: 2} type: 2}
propertyPath: debuffTime.Array.data[2] propertyPath: debuffTime.Array.data[2]
value: 3 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3d077a5f727dd1e4780e9265ed26e036, type: 2} m_SourcePrefab: {fileID: 100100000, guid: 3d077a5f727dd1e4780e9265ed26e036, type: 2}
...@@ -2411,6 +2411,11 @@ Prefab: ...@@ -2411,6 +2411,11 @@ Prefab:
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 14 value: 14
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 114468655689627186, guid: a164c147037e89448820f7387c724c42,
type: 2}
propertyPath: damage
value: 3
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a164c147037e89448820f7387c724c42, type: 2} m_SourcePrefab: {fileID: 100100000, guid: a164c147037e89448820f7387c724c42, type: 2}
m_IsPrefabAsset: 0 m_IsPrefabAsset: 0
...@@ -5,12 +5,12 @@ using Random = UnityEngine.Random; ...@@ -5,12 +5,12 @@ using Random = UnityEngine.Random;
public class Enemy : MonoBehaviour { public class Enemy : MonoBehaviour {
// data // data
// debuff // debuff
float[] immunity_time = new float[(int)EnemyDebuffCase.END_POINTER] { 0.0f, 3.0f, 6.0f, 6.0f, 6.0f }; readonly float[] immunity_time = new float[(int)EnemyDebuffCase.END_POINTER] { 0.0f, 3.0f, 6.0f, 6.0f, 6.0f };
public DebuffState[] debuffState; DebuffState[] debuffState;
public float fireDuration = 0.0f; float fireDuration = 0.0f;
// stat // stat
public int monsterID; public int monsterID;
...@@ -21,9 +21,8 @@ public class Enemy : MonoBehaviour { ...@@ -21,9 +21,8 @@ public class Enemy : MonoBehaviour {
public float attackRange; public float attackRange;
public float patrolSpeed; public float patrolSpeed;
public float trackSpeed; public float trackSpeed;
public float[] knockbackPercentage;
private float playerMaxHealth; //다른 스크립트에 있는 플레이어 최대체력 가져와야함 public float currHealth { get; private set; }
public float currHealth;
// manager // manager
private InventoryManager inventoryManager; private InventoryManager inventoryManager;
...@@ -37,7 +36,6 @@ public class Enemy : MonoBehaviour { ...@@ -37,7 +36,6 @@ public class Enemy : MonoBehaviour {
public bool MovementLock { get; private set; } public bool MovementLock { get; private set; }
public bool KnockbackLock { get; private set; } public bool KnockbackLock { get; private set; }
public float PlayerDistance { get; private set; } public float PlayerDistance { get; private set; }
private readonly float knockbackCritPoint = 0.25f;
public int MoveDir { get; private set; } public int MoveDir { get; private set; }
public bool[] WallTest { get; private set; } public bool[] WallTest { get; private set; }
...@@ -63,6 +61,9 @@ public class Enemy : MonoBehaviour { ...@@ -63,6 +61,9 @@ public class Enemy : MonoBehaviour {
AnimationClip[] clips = animator.runtimeAnimatorController.animationClips; AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
foreach (var clip in clips) { if (clip.name.Contains("Damaged")) { damagedAnimLength = clip.length; } } foreach (var clip in clips) { if (clip.name.Contains("Damaged")) { damagedAnimLength = clip.length; } }
Array.Sort(knockbackPercentage);
Array.Reverse(knockbackPercentage);
} }
private void Start() private void Start()
...@@ -71,7 +72,6 @@ public class Enemy : MonoBehaviour { ...@@ -71,7 +72,6 @@ public class Enemy : MonoBehaviour {
currHealth = maxHealth; currHealth = maxHealth;
Invisible = MovementLock = false; Invisible = MovementLock = false;
dropTable = enemyManager.DropTableByID[monsterID]; dropTable = enemyManager.DropTableByID[monsterID];
//Physics2D.IgnoreCollision(enemyManager.Player.gameObject.GetComponent<Collider2D>(), transform.parent.GetComponent<Collider2D>());
PlayerDistance = Vector2.Distance(enemyManager.Player.transform.position, transform.parent.position); PlayerDistance = Vector2.Distance(enemyManager.Player.transform.position, transform.parent.position);
} }
...@@ -151,7 +151,7 @@ public class Enemy : MonoBehaviour { ...@@ -151,7 +151,7 @@ public class Enemy : MonoBehaviour {
bool[] lockArray = new bool[] { false, KnockbackLock }; bool[] lockArray = new bool[] { false, KnockbackLock };
int knockbackDir = (enemyManager.Player.transform.position.x - transform.parent.position.x >= 0) ? -1 : 1; int knockbackDir = (enemyManager.Player.transform.position.x - transform.parent.position.x >= 0) ? -1 : 1;
float knockbackVelocity = knockbackDir * knockbackDist / knockbackTime; float knockbackVelocity = knockbackDir * knockbackDist / knockbackTime;
ChangeDir_lock(knockbackDir * -1, lockArray); ChangeDir_lock(knockbackDir * -1, new bool[] { MovementLock, KnockbackLock });
ChangeVelocityX_lock(knockbackVelocity, lockArray); ChangeVelocityX_lock(knockbackVelocity, lockArray);
for (float timer = 0; timer <= knockbackTime; timer += Time.deltaTime) for (float timer = 0; timer <= knockbackTime; timer += Time.deltaTime)
...@@ -173,6 +173,7 @@ public class Enemy : MonoBehaviour { ...@@ -173,6 +173,7 @@ public class Enemy : MonoBehaviour {
// - Calculate value & Arrange information // - Calculate value & Arrange information
public void GetDamaged(PlayerAttackInfo attack) public void GetDamaged(PlayerAttackInfo attack)
{ {
float prevHealth = currHealth;
currHealth -= attack.damage; currHealth -= attack.damage;
if (currHealth <= 0) if (currHealth <= 0)
{ {
...@@ -186,15 +187,23 @@ public class Enemy : MonoBehaviour { ...@@ -186,15 +187,23 @@ public class Enemy : MonoBehaviour {
float knockbackDist = attack.damage * attack.knockBackMultiplier / weight; float knockbackDist = attack.damage * attack.knockBackMultiplier / weight;
float knockbackTime = (knockbackDist >= 0.5f) ? 0.5f : knockbackDist; float knockbackTime = (knockbackDist >= 0.5f) ? 0.5f : knockbackDist;
if (MovementLock) if (MovementLock) // 넉백이 진행 중
{ {
StopCoroutine("Knockback"); StopCoroutine("Knockback");
} }
StartCoroutine(Knockback(knockbackDist, knockbackTime)); StartCoroutine(Knockback(knockbackDist, knockbackTime));
if (knockbackDist >= knockbackCritPoint) float currHealthPercentage = currHealth / maxHealth;
float prevHealthPercentage = prevHealth / maxHealth;
foreach (float percentage in knockbackPercentage)
{ {
animator.SetTrigger("DamagedTrigger"); if (currHealthPercentage > percentage) { break; }
if (prevHealthPercentage > percentage)
{
animator.SetTrigger("DamagedTrigger");
break;
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment