전체 35

헥사곤 좌표계

헥사 매치업 게임을 개발할 때 사용한 스왑 로직이다.(그림판에 대충그렸었음...아무도 안볼줄알고..) 일반적인 직사각형과 달리 6방향 이동을 해야해서 아크 탄젠트를 사용하여 각도를 구해주었다.angle = Mathf.Atan2(x,y) * Mathf.Rad2Deg; (라디안을 도 단위로 변환)보드판이 이렇게 있다 가정하고 스왑을 해보면 짝수 홀수 열에 따라 변하는 값이 달라지게 된다.보드판을 제작할때 홀수 열들의 위치를 최대 높이의 절반만큼 높였기 때문에 이런식으로 달라지는 것이다. 결과적으로 이렇게 코드를 짰다. 찾아보니 헥사 매치를 개발할때는 큐브 좌표계를 많이들 사용한다고 나와있다.지금 방식은 2d 배열처럼 열과 행을 보드로 표현한것이고 큐브 좌표계는 헥사곤을 x,y,z 3축 좌표로 표현하여 더 ..

개인 공부/C# 2025.09.30

깃랩과 깃허브데스크탑 연동하기

우선 깃허브 데스크탑을 다운로드 해준다.https://desktop.github.com/ Redirecting… desktop.github.com 깃랩에서 우측 상단 프로필을 클릭해 Edit Profile을 클릭한 후 Access Tokens을 클릭해준다.토큰의 이름만료일 지정토큰 권한 설정 ( 전체를 얻어오기 위해 api 선택 )토큰을 생성해준다. ( 나중에 필요하니 메모장에 따로 적어둘것 ) 팀 프로젝트를 하기 위해 그룹을 생성해주고 프로젝트를 생성 후 팀원들을 초대해준다. 해당 프로젝트를 유니티와 연동시키기 위해서는 전에 올린 Git 포스팅을 참고하면 된다. 깃 데스크탑을 열어 해당 버튼을 클릭하고  URL 부분에 아까 만들었던 프로젝트의 URL을 붙여넣기 해준다. 인증 실패라는 팝업이 나타나게 되..

개인 공부/Git 2024.09.19

TCP 통신 javascript

전에 유니티를 사용하여 클라이언트-서버 통신 시스템을 만들었었다.이번에는 저번거를 약간 수정해서 서버를 자바 스크립트를 이용하여 만들어보겠다.유니티 클라이언트 코드는 저번과 동일하다.const net = require('net');var users = new Map();const server = net.createServer((socket) => {    const cliendId = Date.now().toString();    console.log('Unity 클라이언트가 연결되었습니다.');    socket.on('data', (data) => {        console.log('클라이언트로부터 받은 데이터:', data.toString());        for (const [clientId..

유니티 TCP 통신

유니티에서 새 프로젝트를 생성한다. (이름은 Server로 하였다.)빈 객체를 하나 생성하고 이름을 변경해주었다.TCP Server 스크립트를 생성하여 방금 만든 객체에 적용시켜준다. using UnityEngine;using System;using System.Collections.Concurrent;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;public class TCPServer : MonoBehaviour{ public int port = 7777; private TcpListener tcpListener; private Thread listenThread; private..

Post Process (URP)

포스트 프로세싱은 원본 이미지나 렌더링된 장면에 추가적인 시각적 효과를 적용하는 과정을 말한다. 유니티에서 이를 다뤄보겠다.우선 버전은 22.3.30 버전을 사용했다. HDRP 프로젝트를 생성해준다. 효과를 보기위해 일단 맵을 대충 꾸몄다. 하이어라키 창에서 우클릭을 한 후 Global Volume을 생성해준다. Priority 값을 1로 주고 Profile New를 클릭하여 원하는 효과를 추가한다. 우선 모션블러 효과를 먼저 적용시켜보겠다. 효과를 확인하기 위해서 이동 코드를 카메라에 적용시켰다.  다음으로 Depth Of Field 효과를 적용시켜 보겠다.  Volume의 모드를 Global로 하면 전체 다 적용이 된다. 위의 경우가 Global로 모드를 적용한 결과이다.모드를 Local로 바꾸면 자..

연결 리스트 (Linked List)

연결 리스트는 노드(Node)라는 구조를 사용하여 데이터를 저장하는 자료구조이다. 각 노드는 데이터와 다음 노드를 가리키는 포인터를 포함하며, 노드들은 포인터를 통해 서로 연결된다. 연결 리스트는 배열과 달리 크기가 고정되어 있지 않아 동적으로 데이터를 추가하거나 삭제할 수 있으며, 메모리 공간을 효율적으로 사용할 수 있다. 단뱡향 링크드 리스트 (Singly Linked List) : 단방향으로만 연결되어 있는것으로 다음 노드로만 이동 가능양방향 링크드 리스트 (Double Linked List) : 이전 노드와 다음 노드를 가리키는 포인터를 모두 갖고 있어 양방향으로 탐색이 가능한 자료구조   using System.Collections;using System.Collections.Generic;us..

개인 공부/C# 2024.07.26

Git을 사용해보자.

깃은 자신의 프로젝트 관리, 팀원과의 협업 등 자주 쓰인다. 오늘은 GitLab을 사용해보겠다.우선적으로 나는 GitBash와 TortoiseGit을 다운받은 상태이고 GitLab 회원가입을 마친 상태이다. 우선 git clone을 해보자.다른 사람의 프로젝트를 다운받기 위해 깃에 들어가 URL을 복사해준다. URL부분에 복사한 URL을 붙여넣기 하고 Directory 부분에 다운받을 폴더를 설정 후 OK를 눌러주면 된다.이번에는 내가 만든 프로젝트를 GitLab에 올려보자.Private는 나와 초대한 팀원들만 들어올 수 있다.Public은 누구나 들어올 수 있다.Create project를 클릭한다. URL 창에 뜨는 경로를 복사해준다. 다음은 맨 위 과정과 똑같다. Git Clone을 누르고 URL을..

개인 공부/Git 2024.07.26

스택, 큐

스택은 LIFO(Last-In, First-Out) 방식으로 데이터를 저장하고 관리하는 자료구조이다. 스택은 데이터를 쌓아 올리는 것처럼 가장 최근에 추가된 데이터가 가장 먼저 꺼내지는 특징이 있다.C#에서 스택은 Stack 클래스로 제공되며, 다양한 데이터 유형을 저장할 수 있다. 스택은 함수 호출, 연산자 우선순위 처리, 되돌리기/다시 실행 기능 등 다양한 분야에서 사용된다. 큐는 FIFO(First-In, First-Out) 방식으로 데이터를 저장하고 관리하는 자료구조이다. 큐는 데이터를 쌓아 올리는 것처럼 가장 먼저 추가된 데이터가 가장 먼저 꺼내지는 특징이 있다. 데이터는 큐의 맨 뒤에 추가되고, 맨 앞에서 삭제된다. 큐는 데이터를 순서대로 처리해야 하는 경우에 유용하다. 예를 들어, 프린터 큐..

개인 공부/C# 2024.07.26

델리게이트(delegate)와 이벤트 (event)

델리게이트 (Delegate) 델리게이트는 특정 메서드 시그니처와 일치하는 메서드를 참조할 수 있는 형식이다. 이를 통해 메서드를 변수처럼 다루고, 런타임에 메서드를 동적으로 호출할 수 있다. 이벤트 (Event) 이벤트는 델리게이트의 특수한 형태로, 주로 특정 동작이 발생했을 때 여러 구독자(subscribers)에게 알리는 데 사용된다. 이벤트는 델리게이트보다 더 제한적이며, 이벤트를 발생시키는 클래스 외부에서는 이벤트를 직접 호출할 수 없다. 사용 목적:델리게이트: 특정 메서드의 참조를 저장하고 런타임에 호출하는 데 사용된다. 함수 포인터와 유사한 역할이다.이벤트: 주로 상태 변화나 특정 동작이 발생했을 때 여러 구독자에게 알리는 데 사용된다. 이벤트는 더 제한적이며 외부에서 직접 호출할 수 없다...

개인 공부/C# 2024.07.26

추상 클래스

C#에서 추상 클래스는 구현이 불완전하여 해당 클래스 자체로는 인스턴스화할 수 없는 클래스를 의미한다.추상 클래스는 다른 클래스들이 상속하여 그들의 특정 동작을 구현해야 하는 기반 클래스로 사용된다.추상 클래스는 하나 이상의 추상 메서드를 포함할 수 있으며 추상 메서드는 본체가 없는 메서드로, 파생 클래스에서 반드시 구현해야 한다. 추상 클래스 특징인스턴스화 불가: 추상 클래스는 직접 인스턴스화할 수 없다.추상 메서드: 추상 클래스는 본체가 없는 추상 메서드를 포함할 수 있다. 이 메서드는 파생 클래스에서 구현해야 한다.일반 메서드: 추상 클래스는 일반 메서드도 포함할 수 있다.필드 및 속성: 필드와 속성도 가질 수 있다.생성자: 생성자를 가질 수 있으며, 파생 클래스의 생성자에서 호출할 수 있다.추상 ..

개인 공부/C# 2024.07.26