전체 글 92

유니티 2D 맵 -1

제일 해보고 싶었던 부분이다.캐릭터가 활동할 맵을 제작한다. 유니티에서 맵을 생성하는 방법은 여러가지가 있는데, 그중에서 tiled 라는 프로그램을 이용해서 만들어보기로 했다. https://www.mapeditor.org/ TiledFlexible level editorwww.mapeditor.org  new map 버튼을 눌러 맵을 생성해보자!!!여러 설정을 할 수 있다  orientation 은 타일의 방향 정도..로 생각하면 될듯맵 사이즈에 infinite 말 그대로 무한한 맵을 생성한다는 의미이다..일단 픽스에 48*48픽셀로 생성한다  생성 하면 이런 화면이 뜬다 new tile set로 타일을 가져온다      위에 스탬프 옆에 브러시 버튼이 궁금해서 찾아보니 지형을 만들어주는 도구인듯 했다..

유니티 2025.01.31

유니티 2D 카메라 대상 추적

카메라의 움직임 제어하는 방법 먼저 카메라 움직임을 제어할 스크립트 파일을 만들어준다.  스크립트에 내용을 작성해준다.target은 카메라의 추적 대상this는 스크립트가 부착된, 즉 카메라이다Set함수로 대상의 좌표를 받아와 설정해주고 transform 함수로 this의 좌표를 적용시켜준다     이렇게 카메라가 대상을 따라오는 것을 볼 수 있다!

유니티 2025.01.30

백준 1520 내리막 길

(0,0)좌표부터 (n-1,m-1)좌표까지 도달할 수 있는 모든 경로를 찾는 문제다. 다음 타일의 값이 더 작기만 하면 되는 조건이라 금방 풀 수 있을 거라 생각했다.. 처음에 그냥 bfs로 풀고 답이 나와서 제출하니 시간초과가 나왔다. 이 문제를 해결하기 위해서는 위해서는 dfs + dp로 최적화하여 계산한 다음 값을 내야 한다고 한다.. (문제는 최단 경로를 찾는 것이 아닌 가능한 모든 경로를 찾는 것이므로 bfs보단 dfs를 사용해 푸는 것이 더 낫다고 한다.!) 어떻게 최적화 해야 하는가? 🤔-> 방문한 길을 다시 방문하지 말야아 한다.  그럼 방문한 길을 어떻게 피하는가?-> dp배열의 값을 0이 아니라 음수값으로 초기화하고, 탐색한 dp배열 값이 음수인 경우에만 업데이트를 진행한다. 음수가 ..

백준 9252 Lcs 2

문제LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.처음에는 vector> answer배열을 만들고dp 배열을 업데이트 할 때마다 같이 값을 업데이트 해줬는데,, 시간초과가 났다. 순회하면서 string 배열을 계속 확인하는데 시간이 좀 걸리나보다;;  그래서 dp배열의 역추적을 이용해 문자열을 구해보기로 하였다. dp 배열..

백준 9251 Lcs

문제LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. dp배열을 사용해 풀이한다. 문자열 a b가 주어졌을때 a의 인덱스를 s, b 의 인덱스를 t라 한다.dp[s][t]인 이차원 배열을 사용하는데, 저장되는 값은 각 문자열의 끝을 a[s]와 b[t]라 했을 때 공통되는 부분수열의 최대 길이이다. a[s]==b[t]인 경우에..

유니티 2D 방해물

캐릭터가 화면 내 머무르게 하기 위해 박스 콜라이더를 설정해준다. 플레이어를 우클릭하고 add component를 선택한 후 박스 콜라이너를 투가해준다. 박스 콜라이더의 범위를 지정하기 위해인스펙터로 들어가고 edit colider를 클릭해 범위를 지정해준다. 일단 다리까지만 범위로해준다.     스크립트에서 박스콜라이더랑 레이어마스크 변수를 선언한다. get component로 박스콜라이더를 받아오고  업데이트 함수에서 필요한 변수들을 선언해준다.hit을 이용해 물체의 충돌을 감지한다. hit의 반환값이 존재하는 경우 움직임을 멈추고, 없을 경우에만 움직일 수 있도록 해줬다. ..  이제 인스펙터 스크립트에서 레이어마스크 항목을 찾을 수 있을 것이다.이 레이어마스크로 벽처럼 갈 수 없는 공간을 지정해줘..

유니티 2025.01.26

유니티 2D 모션 반전

모션 반전을 사용하기 위해서는 인스텍터의 플립 속성에 접근해야 한다.그치만 여기에 스크립트로 어떻게 접근하지? ..찾아보니 SpritRenderer spriteRenderer 변수를 설정해주고 get component로 가져온 다음 아래에서 키 눌렸을 때 filp해주면 된다. 우와 이제 좌우로 움직일 수 있다~ 위 아래도 모션이 따로 필요할까 생각해봤는데 굳이 없어도 어느정도 자연스러운 것 같아 생략하기로 했다.

유니티 2025.01.24

유니티 2D 모션

뛰는 모션을 추가기 위해 애니메이션을 설정해주려 한다. 애니메이션 컨트롤러를 먼저 만들어 줘야한다.  이 컨트롤러를 드래그앤 드롭으로 캐릭터에 적용해준다. 애니메이션도 create로 만들어준다.모션을 계속 반복하려면, 루프타임에 꼭 체크를 해줘야한다. 애니메이터에서 run모션을 확인 할 수 있다.  애니메이션 탭으로 넘어가서, 이미지들을 넣어준다.  빠르게 달리는 상태를 만들기 위해 fast run 애니메이션도 create해준다.그리고 애니메이터에서 추가해 준 후 run->우클릭-> 상태 전이(make transation)를 선택해준다.뛰기-> 달리기로도 상태 전이 설정해주고파라미터 창에서 한번 완료시마다 호출되는 트리거를 만들어주고 이름은 isrun으로 해줬다.  마우스로 상태 전이를 선택할 수 있는데..

유니티 2025.01.24

유니티 2D

원하는 아이템 + sprite site opengameart.org 검색시 무료 이미지를 다운 받을 수 있다.  스프라이트가 덩어리로 되어있을 때 스프라이트 모드를 덩어리로 바꿔준다. (그래야 뭉텅이를 쪼갤 수 있다고,, )하고 나서 에디터를 열어준다   행과 열을 기준으로 나누기 위해.. 받은 그림이 17행 6열이라 그렇게 해준다.. (왤케 많아?..)    이렇게 잘라주고 옆에 apply눌러주면 원소 하나씩 저장된다..  이미지 픽셀 조절을 위해 point 로 설정해준다(픽셀이미지를 이용할 경우 뭉개짐을 방지하기 위해서라고..)   이렇게 설정 해주었다.. 아 그런데 캐릭터 배경이미지가 투명이 아니라서 신경쓰인다.ㅜㅜㅜㅜ  움직임 제어움직임 제어를 위해 스크립트 생성해줬다.  캐릭터가 앞과 위로만 움..

유니티 2025.01.24

백준 5214 환승

문제아주 먼 미래에 사람들이 가장 많이 사용하는 대중교통은 하이퍼튜브이다. 하이퍼튜브 하나는 역 K개를 서로 연결한다. 1번역에서 N번역으로 가는데 방문하는 최소 역의 수는 몇 개일까?입력첫째 줄에 역의 수 N과 한 하이퍼튜브가 서로 연결하는 역의 개수 K, 하이퍼튜브의 개수 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ K, M ≤ 1000)다음 M개 줄에는 하이퍼튜브의 정보가 한 줄에 하나씩 주어진다. 총 K개 숫자가 주어지며, 이 숫자는 그 하이퍼튜브가 서로 연결하는 역의 번호이다. 처음에 그냥 모든 가중치가 1인 경로에서 최단거리를 찾는 문제라 생각하여 bfs로 정점과 간선의 정보를 사용해 풀이하였는데,, 메모리 초과가 나와서 마음이 힘들었다..이 문제를 해결하기 위해서는, 정점 사이 연..