전체 글 80

[유니티/UNITY] VR · 기업협약 팀 프로젝트 개발일지 겸 후기

UNITY VR · 기업협약 팀 프로젝트뛰뛰빵빵 VR (D2B2) 개발일지이동 시스템 · 신호등 판정 · 미션 NPC · 타임라인 안전가이드 · 기획 오류 수정 경험8인팀 · 9주 Unity 2021.3 + XRI 2.6.4 Photon PUN2 Firebase DOTween · UniTask목차이동 시스템 — 3차에 걸친 구조 개선미션 시스템 — 하드코딩 제거 리팩토링미션 체크 UI · 클리어 UI신호등 & 횡단보도 — 복합 조건 판정GuideNPC & 타임라인 안전가이드기획 오류 수정 경험 1이동 시스템 — 3차에 걸친 구조 개선 VR 교육 콘텐츠에서 이동 시스템을 어떻게 설계할지가 초반의 가장 큰 고민이었습니다.단순 조이스틱 이동은 VR 멀미를 유발하고, 몰입감을 해쳤습니다.실제로 팔을 흔드는 동작..

Unity/프로젝트 2026.05.15

C# 콘솔로 구현한 리듬 액션 핵심 루프

이번에 정리한 프로젝트는 ConsoleNecroDancer다.이 프로젝트는 원작 전체를 구현한 것이 아니라, 콘솔 환경에서 리듬 입력과 타일 기반 이동, 전투의 핵심 루프를 먼저 실험해본 미니 프로젝트입니다.제작 기간은 2024년 12월 23일부터 12월 29일까지, 총 7일이입니다. 요약 4줄 리듬 입력과 타일 전투를 콘솔로 구현해본 기록네크로댄서 핵심 루프를 콘솔로 실험해보기C# 콘솔 게임 프로토타입 회고핵심 루프부터 검증한 7일 프로젝트 1. 프로젝트를 만든 이유이 프로젝트를 시작한 이유는 단순했습니다.네크로댄서 같은 리듬 기반 게임을 바로 크게 만들기보다, 먼저 콘솔에서 핵심 구조가 어떻게 돌아가는지 직접 확인해보고 싶었습니다.특히 아래 요소를 먼저 구현해보고 싶었습니다.타이밍에 맞춘 입력 판정타..

Class 와 Struct의 차이

▶-Struct란?: 하나이상의 변수를 묶어 그룹화하는 사용자 정의 자료형(데이터 형)이다.int, double 등과 같은 기본적으로 제공되는 변수 유형이 아닌 새로운 유형 , 여러가지 유형을 사용하기 위해 사용자가 직접 만들어 사용하는것으로 구조체의 특징은 일반 변수와 같이 값 형식의 데이터 형식이다. (클래스는 참조형식) -Class란?: 클래스는 객체를 만들어 낼 수 있는 틀로써, 객체지향 언어에서 하나의 프로그램 단위는 클래스이다.다시 말해 클래스는 하나의 사물에 비유할 수 있고, 데이터 타입의 일종이라 할 수 있다.우리가 개발을 시작하고 그동안 많이 들어왔던 붕어빵을 예시로 들자면 붕어빵 자체는 객체이고, 크기와 모양이 똑같은 붕어빵을 만들어 내는 붕어빵 틀 기계는 클래스가 된다.더 자세히 들어..

IT/학습 2025.06.21

[유니티/Unity] 몬스터헌터 모작 - 네트워크 팀 프로젝트

https://youtu.be/VCp4IfyKoJc?si=i1Sf4ycL-dlYrjyO유니티 네트워크 팀 포트폴리오로 몬스터헌터를 모작해 봤습니다. 개발 목적이번 프로젝트에서는 몬스터헌터 스타일의 게임에서 사용할 수 있는 인벤토리 시스템, UI시스템, 집회소 시스템, 사냥 시스템 , 몬스터 시스템을 구현하는 것이 목표였습니다. 제가 이 프로젝트에서 맡은 역할은 팀장 + UI 시스템 + 인벤토리 시스템 + 멀티플레이 아이템 구현 입니다. 이렇게 첫 목표를 설정했었고, 아슬아슬하게 처음 목표로 잡은 기능은 다 만들어서 다행이였습니다. 왼쪽은 0주차 즉 프로젝트 시작전에 팀 회의로 정한 부분이고, 오른쪽은 주차 시작마다 회의후 정한 부분입니다. 이런식으로 노션에 계획을 정하고 주차가 시작될때마다 목표를 정..

Unity/프로젝트 2025.04.07

애니메이터와 네비메쉬 속성들

모델을 하이어라키에 배치하면 애니메이터가 보입니다Controller: 애니메이션 컨트롤러 넣는 곳Apply Root Motion: 애니메이션 클립에 저장된 위치 및 회전값 적용 여부Update: 애니메이션 갱신 주기Normal: 업데이트 주기 영향 받고, Time scale의 영향을 받음Animate Physics: FixedUpdate 영향을 받고, Rigidbody 상호작용할 때 사용UnscaledTime: Update 주기 영향 받고, Time scale 영향 안받음Culling ModeAlways Animate: 카메라가 비추고 있지 않아도 애니메이션 재생Cull Update: 랜더링 하지 않을 때는 정지Cull Completely: 랜더링 되지 않으면 모든거 싹 다 멈춤 애니메이션 리타게팅은 한..

Unity/학습 2025.02.07

유니티에서 마우스 휠 사용법

이것이 내가 유니티에서 사용해본 방법이다.public class FollowCam : MonoBehaviour{ public Transform targetTr;//따라갈 타겟 Transform camTr;//카메라 트랜스폼 //따라갈 대상으로부터 떨어질 거리 [Range(2.0f, 20.0f)] //public float distance = 10.0f; public float distance = 3.5f; //Y축 높이 바꿀것 [Range(0f, 10.0f)] //public float height = 2.0f; public float height = 3.17f; //X축 높이 바꿀것 [Range(0f, 10.0f)] //public ..

Unity/학습 2025.02.06

셸 정렬(shell sort) c#으로 구현하기

셸 정렬(shell sort) 알고리즘의 개념 요약 ‘Donald L. Shell’이라는 사람이 제안한 방법으로, 삽입정렬을 보완한 알고리즘이다.삽입 정렬이 어느 정도 정렬된 배열에 대해서는 대단히 빠른 것에 착안삽입 정렬의 최대 문제점: 요소들이 삽입될 때, 이웃한 위치로만 이동즉, 만약 삽입되어야 할 위치가 현재 위치에서 상당히 멀리 떨어진 곳이라면 많은 이동을 해야만 목표한 자리로 갈 수 있다.삽입 정렬과 다르게 셸 정렬은 전체의 리스트를 한 번에 정렬하지 않는다.과정 설명먼저 정렬해야 할 리스트를 일정한 기준에 따라 분류연속적이지 않은 여러 개의 부분 리스트를 생성각 부분 리스트를 삽입 정렬을 이용하여 정렬모든 부분 리스트가 정렬되면 다시 전체 리스트를 더 적은 개수의 부분 리스트로 만든 후에 알..

[유니티/Unity] 포켓몬 로얄 - 팀 프로젝트

Card 클래스 플레이 시 나올 유닛 덱 카드 정보와 이미지를 가지고 있습니다.아래 내부는 생성자와 프로퍼티만 가지고 있고, 모든 유닛들의 카드 정보는 이 클래스를 공유하고 있습니다.ViewController메인 씬에서 버튼 클릭 시 작동할 코드들을 모아둔 곳입니다. 그래서 버튼들의 게임오브젝트를 public으로 열어둔 뒤 하이어라키 창에서 연결하여 사용했습니다.GetComponent를 최대한 사용하지 않고 만들고 싶었기 때문입니다. 그리고 생각지 못하게 덱 이미지에 카드를 장착·제거할 경우 예외처리를 위한 정보 탐색이 필요해져서, 진행하다 보니 코드가 조금 늘어났습니다.깔끔하게 바꾸기엔 현재 시간이 부족해 다음으로 미뤘습니다. 나중에는 해당 카드들의 전체 관리 클래스가 있으니, 거기서 메서드 하나를 만..

Unity/프로젝트 2025.01.24

[팀 포폴] 클래시로얄 라이크(포켓몬 로얄) -잡담

지금 팀포폴을 제작중인데, 많이 힘들다... 초반엔 초기 프로젝트 설계를 맡아서 재밌게 이것저것 섞으면서 정했고, 이제 제작을 하는중인데.. 설계를 설명했을땐 금방 끝날거같은 분위기 였으나, 막상 해보니 팀원들 전부가 유니티를 처음다뤄봐서 이것저것 기능별로 해메고있다 ㅋㅋ.. 덕분에 많이 배우기는 하는것 같은데 힘들다! 하나하나 해결할떄마다 재미는 있는데 힘들긴하다. 암튼 최초의 문제는 MonoBehaviour상속을 받으면 new를 할수없다는게 첫번쨰 문제였고,팀원이 GetComponent 해놓고 sprite를 불러와서 난리나고 아주 좌충우돌 코딩기를 겪고있다.. ㅎㅎ그래도 차근차근 해결해 나아가고 있고,지금 내 문제는 UI를 하는 과정에서 Canvas의 좌표가 그 안에있는 UI 렉트 포지션들의 좌표값에..

Unity/프로젝트 2025.01.16

유니티 오늘 배운내용

# Instantiate- 2D에선 잘 버팀 3D에선 좀 걸림- 게임에선 로딩을 사용해서 한번에 생성한뒤 재사용한다- Transform,RIgidbody- 값초기화도 연산이들어감.# Destroy- 쓰지 않는 메모리가 되어서 해제가 되어야함.- 가비지 콜렉터가 돌면서 수거해 갈거임.- 그런데 가비지 콜렉터가 언제 작동하는지 알아야 함.- 네이티브C#, .NetFramework에서의 가비지 콜렉터는 '주기적으로' 수행됨- Generation 방식- 유니티의 가비지 콜렉터 : '메모리가 부족할 때 작동'- Mark and Sweep , - 메모리 사용량이 많아지면 , 유니티는 강제로 GC를 돌림- 이떄 GC스파이크(갑자기 메모리 사용량 높아지는것) 렉이 걸림,프레임 드랍걸림둘다 덜 사용하면 가비지 콜렉터가 ..

Unity/학습 2025.01.11