02/13 본캠프 #34

guno park·2024년 2월 13일
0

본캠프

목록 보기
34/77

알고리즘 풀어보기

기능개발

풀이

각각의 작업들이 완료되는데 필요한 시간들을 기준으로, 앞에서부터 시간이 지나 완료된 작업들을 모두 더하고 배열에서 제거하는 방식으로 작성하였다.

using System;
using System.Linq;
using System.Collections.Generic;

public class Solution {
    public List<int> solution(int[] progresses, int[] speeds) {        
      List<int> answer = new List<int>();
        int[] needDate = new int[progresses.Length];
        int b = 1;
        for (int i = 0; i < progresses.Length; i++)
        {
            while (true)
            {
                if (progresses[i] + speeds[i] * b >= 100)
                {
                    needDate[i] = b;
                    b = 1;
                    break;
                }

                b++;
            }
        }
        
         while(needDate.Length >0){
            //앞에서부터 
            int index = Array.FindIndex(needDate, x => x > needDate[0]);
            if (index != -1)
            {
                answer.Add(index);
                needDate = needDate.Skip(index).ToArray();
            }
            else
            {
                answer.Add(needDate.Length);
                needDate = needDate.Skip(needDate.Length).ToArray();
            }
            
        }

        return answer;
    }
}

팀 프로젝트 : 3D 서바이벌 게임 만들기

횃불 만들기

횃불을 자식오브젝트로 두었을 때 트리거 검출을 하지 못했던 부분을 튜터님께서 알려주신 방법으로 해결했다.

부모 오브젝트의 콜라이더가 있고 자식에 또 콜라이더가 있는 경우에는
자식들 콜라이더를 부모 콜라이더처럼 인식해서 판단을 합니다.
그래서 분리시키려면 자식 오브젝트에도 리지드바디 컴포넌트를 붙이면
자식 오브젝트에서도 따로 충돌처리가 가능합니다.

그리고 OnTriggerStay의 경우 충돌처리에 대해 계속 대기하고 있기때문에 좋지 않은 것 같아서, 위 방식으로 바꾸면 OnTriggerEnter가 게임 오브젝트가 True가 될 때도 적용되고, 또 꺼질때는 OnDisable로 처리하여 조건을 바꿔줄수 있도록 하였다. 추가로 다른 광,열원에도 우선순위를 적용해 조건을 바꾸도록 변경해주었다.

화면 블러처리

과열상태가 되었을 때 붉은 화면에 흐릿하게 보이도록 해주었다.
UI에 Image를 사용하는데, blur용 쉐이더와 메테리얼을 사용한다.
화면 블러처리하기
다만 주의점으로 이 블러용 메테리얼은 이미지 컴포넌트의 스프라이트가 없는 경우를 상정하고 만들어진 듯 하고, UI용 블러기때문에 먼저 렌더링 될 수 있도록 맨 위로 올리는 것을 추천한다.

낮/밤 만들어주기

지난 시간에 들었던 강의를 재활용해서 낮/밤을 구현하도록 했다.
하지만 기존에는 낮과 밤의 비중이 반반이였고, 여기서는 3:1이기 때문에 Light Intensity를 변경해주어야했다.

X축은 Time을 의미한다. 그래서 밤 시간인 0.75f 이후부터 값을 적용해주었다.

0개의 댓글