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

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

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