Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

동구의_C# & Unity_개발일지

2024.02.16 내일배움캠프 37일차 TIL_Unity (숙련, 알고리즘) 본문

Unity

2024.02.16 내일배움캠프 37일차 TIL_Unity (숙련, 알고리즘)

mongle_0l 2024. 2. 16. 15:43

오늘은 숙련 팀 프로젝트 마지막 날로 제출을 하였다.

발표는 내가 하였고 처음이라 많이 떨려서 내가 뭐라고 말을 하였는지조차 모르겠다.

아무튼 잘 마무리되었고 잘..제출 한 것 같다!

 

석동구 : 맵 구성 및 스테이지 구성 담당
타일 맵으로 탬플릿 제작
기본 제작 )일반 몬스터 맵 / 보스 맵 / 숨겨진 방(보상 맵)
맵에 콜라이더 구현(벽 또는 지형지물)
맵 랜덤배치 로직 구현
스테이지 넘어가는 방식 구현
몬스터 스폰 위치 설정
기본 구현)맵에 기본적으로 존재하는 몬스터 스폰 위치(랜덤으로)만 지정
아이템 루팅 위치 설정


알고리즘 코드카타 22일차

핸드폰 번호 가리기


문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
public class Solution {
    public string solution(string phone_number) {
        string answer = "";

        for (int i = 0; i < phone_number.Length; i++)
        {
            if (i < phone_number.Length - 4)
            {
                answer += "*";
            }
            else
            {
                answer += phone_number[i];
            }
        }

        return answer;
    }
}


팀 프로젝트


트러블 슈팅

맵 랜덤 로직 구현이 가장 힘들었다.
스테이지 중간에 아이템을 획득할 수 있는 보상 맵이 있는데 랜덤으로 생성되는 맵 중간중간에 그러한 원하는맵 고정 맵을 끼워 넣을 수 있는 로직을 구현이 가장 힘들었던 것 같다.
해결 방법으로 각 방마다 번호를 정하는 것!
예를 들어 번호가 6번과 12번인 경우만 보상 맵을 활성화하고 나머지 번호들을 비활성화 하는것으로 해결을 하였다.
마지막 보스방도 마찬가지로 마지막 방번호을 설정하여 랜덤 값으로 돌아가고있던 맵들을 특정 번호에 다다르면 비활성화가 되고 보스 방만 활성화가 되는 것으로 구현을 하였다.

public void NextMap()
{
    randomMap = Random.Range(0, 3);

    if (stageNumber == 6 || stageNumber == 11)
    {
        randomMap = 3;

        Map1.SetActive(false);
        Map2.SetActive(false);
        Map3.SetActive(false);
        CompensationMap.SetActive(true);
    }
    else if (stageNumber == 14)
    {
        randomMap = 4;

        CompensationMap.SetActive(false);
        Map1.SetActive(false);
        Map2.SetActive(false);
        Map3.SetActive(false);
        BossMap.SetActive(true);
    }
    else
    {
        if (randomMap == 0)
        {
            Map1.SetActive(true);
            Map2.SetActive(false);
            Map3.SetActive(false);
            CompensationMap.SetActive(false);
        }
        else if (randomMap == 1)
        {
            Map1.SetActive(false);
            Map2.SetActive(true);
            Map3.SetActive(false);
            CompensationMap.SetActive(false);
        }
        else if (randomMap == 2)
        {
            Map1.SetActive(false);
            Map2.SetActive(false);
            Map3.SetActive(true);
            CompensationMap.SetActive(false);
        }
    }
}