Edited with Error

코드 리뷰 후 에러가 있는 코드
This commit is contained in:
김도훈_crow 2026-01-23 17:06:57 +09:00
parent 42fb98cf8a
commit 79d947d176
5 changed files with 83 additions and 52 deletions

View File

@ -3,13 +3,9 @@ using UnityEngine.Events;
public class Entity : MonoBehaviour public class Entity : MonoBehaviour
{ {
public float maxHealth { get; private set; } private int maxHealth;
public float currentHealth { get; private set; } private int currentHealth;
public float attackDamage { get; private set; } private int attackDamage;
public UnityEvent OnDeath;
public UnityEvent<float> OnTakeDamage;
[SerializeField] private EntityData data; [SerializeField] private EntityData data;
@ -20,30 +16,28 @@ public class Entity : MonoBehaviour
attackDamage = data.attackDamage; attackDamage = data.attackDamage;
} }
public virtual void TakeDamage(float damage) public virtual void TakeDamage(int playerAttackDamage)
{ {
currentHealth -= damage; currentHealth -= playerAttackDamage;
OnTakeDamage?.Invoke(damage);
if (currentHealth <= 0) if (currentHealth <= 0)
{ {
currentHealth = 0; currentHealth = 0;
Die();
}
}
protected virtual void Die()
{
Destroy(gameObject); Destroy(gameObject);
OnDeath?.Invoke(); }
} }
public void Heal(float heal)
void Update()
{ {
if (heal < 0) return; RunAI();
currentHealth += heal; }
if(currentHealth > maxHealth)
protected void RunAI() { }
public int getAttackDamage()
{ {
currentHealth = maxHealth; return attackDamage;
}
} }
} }

View File

@ -3,7 +3,7 @@ using UnityEngine;
[CreateAssetMenu(fileName = "EntityData", menuName = "Scriptable Objects/EntityData")] [CreateAssetMenu(fileName = "EntityData", menuName = "Scriptable Objects/EntityData")]
public class EntityData : ScriptableObject public class EntityData : ScriptableObject
{ {
public string entityName; public string name;
public float maxHealth; public int maxHealth;
public float attackDamage; public int attackDamage;
} }

View File

@ -0,0 +1,50 @@
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
private int currentHealth;
private int maxHealth;
private int maxJumpCount = 2;
private int currentJumpCount = 2;
[SerializeField] private float moveSpeed = 9f;
[SerializeField] private float jumpSpeed = 18.2f;
[SerializeField] private float jumpCutMultiplier = 0.3f;
private Rigidbody2D _rigidbody;
private void Start()
{
_rigidbody = gameObject.GetComponent<Rigidbody2D>();
}
public void Jump()
{
if (currentJumpCount > 0)
{
currentJumpCount--;
_rigidbody.linearVelocity = new Vector2(_rigidbody.linearVelocity.x, 0);
_rigidbody.AddForce(Vector2.up * jumpSpeed, ForceMode2D.Impulse);
}
}
public void Heal(int heal)
{
if (heal < 0) { return; }
currentHealth += heal;
if (currentHealth > maxHealth)
{
currentHealth = maxHealth;
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b68250b34a148164d9a00b31f0af63d8

View File

@ -6,6 +6,12 @@ using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour public class PlayerController : MonoBehaviour
{ {
private Player player;
private int currentHealth;
private int maxHealth;
private Rigidbody2D _rigidbody; private Rigidbody2D _rigidbody;
private Camera _camera; private Camera _camera;
@ -34,6 +40,7 @@ public class PlayerController : MonoBehaviour
private void Start() private void Start()
{ {
player = GetComponent<Player>();
_rigidbody = gameObject.GetComponent<Rigidbody2D>(); _rigidbody = gameObject.GetComponent<Rigidbody2D>();
_camera = Camera.main; _camera = Camera.main;
} }
@ -70,31 +77,7 @@ public class PlayerController : MonoBehaviour
private void OnJump(InputValue value) private void OnJump(InputValue value)
{ {
if (value.isPressed) player.Jump();
{
if (currentJumpCount > 0)
{
currentJumpCount--;
jumpStartTime = Time.time;
if (jumpCutRoutine != null) StopCoroutine(jumpCutRoutine);
_rigidbody.linearVelocity = new Vector2(_rigidbody.linearVelocity.x, 0);
_rigidbody.AddForce(Vector2.up * jumpSpeed, ForceMode2D.Impulse);
}
}
else
{
float timeElapsed = Time.time - jumpStartTime;
if (timeElapsed >= minJumpDuration)
{
CutJumpVelocity();
}
else
{
float delay = minJumpDuration - timeElapsed;
jumpCutRoutine = StartCoroutine(DelayedJumpCut(delay));
}
}
} }
private void NormalAttack() private void NormalAttack()
@ -216,4 +199,6 @@ public class PlayerController : MonoBehaviour
} }
} }
} }