기본조작은 키보드 방향키로 하고 점프는 스페이스바임.

주인공은 체력이랑 스테미너를 가지고 있음.


주인공 조금 구려서 주인공 바꿈 ㅋㅋ

나중에 상점(?) 같은거 만들어서 모아둔 골드로 캐릭터 사고 이러는거 만들어보면 좋을 것 같음

ac5939a70001b942813e33669735c1bcc2a977c21c773585f0dabed5e42e074dc2d2542d4fa5fd29cba114c2d1971e9e7fb2ac31d1ac5a962b07c8bb231ef4c68e8293ce2c866ffbd9cc8f36a12c

왼쪽하단에 초록색이 체력바, 하늘색이 스테미너임.

폭탄 혹은 몬스터 공격에 맞으면 체력바 줄어들게 할거고 달리기하면 스테미너 줄어들도록 할거임.


아 그리고 주인공은 주기적으로 진행방향의 뒤쪽에 폭탄을 던짐.


스테미너 다쓰면 못뛰게 하는건 아직 구현하지 않았음


20b2c623abd531a04e81d2b628f17c6f2728bd1bd5


















ac5922a70013b940a53e32599734e5bc8f1de430db8814529df4e3bfe97f68aa06550190b5044b8b



아 그리고 달리기 만들다가 갑자기 자연스러움(?)이 있었으면 해서 달리기 속도가 서서히 증가하도록 바꿔보았음


if (isRunning)
{
currentSpeed = Mathf.SmoothDamp(currentSpeed, targetSpeed, ref speedSmoothVelocity, accelerationTime);
}


공식문서에는 아래와 같이 쓰여져있음

Gradually moves the current value towards a target value, over a specified time and at a specified velocity.

This method smoothes the current value towards a target value with a spring-damper like algorithm

대충 무슨무슨 알고리즘을 활용해서 목표값 까지 부드럽게 증가 하도록 해준다고함



짤만보면 티가 잘 안나는데 targetSpeed를 엄청 높혀두고 테스트 해보니 정상 작동하는게 보였음.

나중에 아이템이나 능력치를 통해 가속력, 최대속도 등등 여러수치들을 조절 가능 하도록 할 계획임

3eb0df29f1da76a167b9f68b12d21a1d34f4f112d983b4



아 그리고 UI는 Canvas라는 것에다가 만들어야 한다길래 html 캔버스 생각나서 좌절하려던 찰나


2ebcde30e4c176b660b8f68b12d21a1d913f88a4e9f4


2ebcde30e4c16ae87eb1d19528d52703c0137771c704



"딸깍"


이건 GPT한테 딸깍 시킴

딴건 시키면 잘 못해서 혼자 삽질했는데 이런건 또 잘 알아먹고 하더라

private void UpdateUI()
{

healthBar.fillAmount = currentHealth / maxHealth;
staminaBar.fillAmount = currentStamina / maxStamina;
Debug.Log($"Health: {healthBar.fillAmount}, Stamina: {staminaBar.fillAmount}");
}

// 체력과 스테미너를 감소시키는 메서드
public void TakeDamage(float amount)
{
currentHealth -= amount;
if (currentHealth < 0) currentHealth = 0;
UpdateUI();
}

public void UseStamina(float amount)
{
currentStamina -= amount;
if (currentStamina < 0) currentStamina = 0;
UpdateUI();
}

public void RestoreStamina(float amount)
{
currentStamina += amount;
if (currentStamina > maxStamina) currentStamina = maxStamina;
UpdateUI();
}



PlayerMovement 스크립트에서 아래와 같은 방식으로 사용함.

if (isRunning)
{
manager.UseStamina(staminaCost);
currentRunningSecond += Time.deltaTime;
currentSpeed = Mathf.SmoothDamp(currentSpeed, targetSpeed, ref speedSmoothVelocity, accelerationTime);
}


아 그리고 폭탄 loop는 코루틴을 사용했음

벌써 이름부터 "루틴"이 들어감


뭔가 반복할거라는게 막 느껴짐

javascript의 setInterval과 비슷한 개념인 것 같음


update에서 직접 구현해볼까 했지만 코루틴이라는게 있다길래 이런 것도 있구나 하고 써보았음

찾아보니까 약간의 오차가 있다는데 당장은 약간의 오차가 큰 문제가 될 것 같지는 않아서 그냥 두기로함

private void Start()
{
StartCoroutine(DropBombs());
}

private IEnumerator DropBombs()
{
while (true)
{
DropBomb();
yield return new WaitForSeconds(dropInterval); // 지정된 간격만큼 대기
}
}


yield break; 이거로 코루틴을 정지 시킬 수 있다고함

폭탄 그만 만들어야 하면 저거로 탈출 하면 될 것 같음.


다음에 해볼 것

- 폭탄 파편에 데미지 

- 폭탄 살상 반경 표시 ( 로스트아크나 다른 게임들 보면 공격 유효범위?를 바닥에 빨간색 혹은 기타 다른 형태로 표시해주는 그거 )

- 일시정지 기능 ( 예를들어 ESC누르면 잠깐 멈춰있는 그런거 )

- 몬스터

- 몬스터 처치시 골드및 경험치 획득