58. Unity 최종 프로젝트 2주차(3)

이규성·2024년 1월 18일
0

TIL

목록 보기
64/106

01/18

📌알고리즘 코드 카타 (Algorithm Code Kata)

이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

입출력 예

sreturn
"try hello world""TrY HeLlO WoRlD"
using System.Collections.Generic;

public class Solution
{
    public string solution(string s)
    {
        string answer = "";


        List<string> list = new List<string>(s.Split( ));

        for (int i = 0; i < list.Count; i++)
        {
            char[] chars = list[i].ToCharArray();
            for (int j = 0; j < chars.Length; j++)
            {
                if (j % 2 == 0)
                {
                    answer += chars[j].ToString().ToUpper();
                }
                else
                {
                    //answer += chars[j].ToString();
                    answer += chars[j].ToString().ToLower();
                    엠병 대문자는 소문자로 바꿔야 했었다.
                }
            }
            if (i == list.Count - 1)
            {
                break;
            }
            answer += " ";
        }

        return answer;
    }
} 

코드 실행은 되나 제출에서 자꾸 틀린다 . . . 테스트 케이스를 추가해 보며 수정할 예정.
질문을 찾아보니 대문자는 소문자로 바꿔야 했었다 . . . 그럼 입출력 예를 좀 직관적으로 하라고 . . . 😥

📌팀 프로젝트 진행

Weapon 구현 설계

필요한 사항

공격 애니메이션

  1. 캐릭터의 손에 대검 위치 시킨다.
    대검의 위치를 수정하였다.
  2. 대검을 들었을 시 Idle 애니메이션 변경이 필요해 보인다.
    ToolSystem의 OnEquip 이벤트에 도구의 TwoHandedTool bool값을 판단해주는 함수를 구독한다.
    두 손 State를 만들어서 함수 내에 ChangeState를 해준다.
  3. 대검 공격 애니메이션의 콤보 어택이 통으로 되어 있던데 나눌 수 있는지 확인이 필요해 보인다.
    콤보가 나누어져 있는 것을 확인하였다. Player의 Animator에 추가하였다.

PlayerAttackState.cs, PlayerComboAttackState.cs

1. 위의 사항을 점검하고 알맞게 두 스크립트의 수정이 필요해 보인다.

Weapon.cs, Health.cs

  1. FSM에 맞게 강의에 따라 우선 구현을 시도한다.
  2. 정상적으로 무기 공격이 동작한다면 상태이상 시스템을 적용해 본다.
    https://teamsparta.notion.site/231211-4c21f35ab2dc494eb063a324a94e54de

금일 구현 설계

Weapon과 monster 사이의 상호작용을 구현하자. collider등 . . .
Weapon의 damage를 어떻게 player에게 전달할지 결정하자. ItemSO -> Player . . .
TwinDagger가 오른손에 쥐어졌을 때 이슈를 해결하자.
Weapon.cs에 상태이상 등의 효과 추가를 트라이해보자.

금일 구현한 사항

Weapon class 생성

private int damage; // SO의 데미지를 받아오자
private float knockback;

private void OnTriggerEnter(Collider other)
{
    Attack(other.GetComponent<IHit>());
}

public void Attack(IHit target)
{
    if(target == null)
    {
        return;
    }
    target.Hit(this, damage);
}
// Player.cs

public void Hit(IAttack attacker, float damage)
{
    ConditionHandler.HP.Subtract(damage);
}
// Monster.cs

public void Hit(IAttack attacker, float damage)
{
    HP.Subtract(damage);
}
// Condition.cs

public void Subtract(float amount)
{
    if (currentValue == 0) return;

    currentValue = Mathf.Max(currentValue - amount, 0.0f);
    OnUpdated?.Invoke(GetPercentage());
    if(currentValue == 0)
    {
        OnBelowedToZero?.Invoke();
    }
}

IAttack, IHit 인터페이스를 이용하여 구현 당하였다.
이슈를 공유했더니 무수한 조언의 요청에 의해 구현 당해졌다.

금일 이슈


Weapon의 collider와 Player가 닿으면서 데미지가 들어온다. Layer 체크로 해결해볼까 싶지만 Weapon class를 Monster와 같이 쓸 계획이라서 고려할 부분이 많아져서 고민이다. 내일 좀 더 트라이해보고 이슈를 공유할 예정이다.

금일 커밋한 사항

Null

0개의 댓글