본문 바로가기

분류 전체보기128

큐브 제거 기능 목적 이 기능은 사용자가 AR 환경 내의 가상 큐브를 특정 횟수(예: 4회) 터치하면, 해당 큐브를 제거하는 동작을 구현합니다. 이는 AR 경험 내에서 동적인 상호작용을 가능하게 하고, 사용자가 환경을 조작할 수 있는 능력을 제공하기 위한 목적으로 개발되었습니다. 간단 구현 코드 더보기 using UnityEngine; public class CubeInteraction : MonoBehaviour { private int touchCount = 0; // 터치된 횟수를 저장 public void OnTouch() { touchCount++; // 사용자의 터치마다 카운트 증가 if (touchCount >= 4) { Destroy(gameObject); // 4회 이상 터치되면 큐브 제거 } else .. 2024. 4. 4.
평면 감지와 가상 객체 생성 목적 실제 환경에 AR 평면을 감지하고, 사용자의 터치 입력에 따라 가상의 큐브를 해당 평면 위에 생성하는 기능을 구현합니다. 이 과정에서 상호작용을 통해 큐브의 색상, 크기, 회전을 변경할 수 있습니다. 구현 코드 (간단한 코드 로직, 자세한 주석 추가) 더보기 public class CubeSpawner : MonoBehaviour { public ARRaycastManager raycastManager; // ARRaycastManager 컴포넌트 참조 public GameObject cubePrefab; // 생성할 큐브의 프리팹 void Update() { if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { Lis.. 2024. 4. 4.
터치로 가상 객체 상호작용 (색상, 회전 및 크기 변경) 목적 사용자의 터치 입력에 반응하여 가상 객체가 색상 변경 및 회전하거나 크기가 변하는 기능을 구현하는 것입니다. 이는 사용자와 가상 환경 간의 인터랙티브한 경험을 제공하기 위함입니다. 구현 코드 (간단한 코드 로직) 더보기 using UnityEngine; public class InteractiveObject : MonoBehaviour { void Update() { // 화면이 터치되었는지 확인 if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { // 터치 위치에서 레이를 발사 Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit.. 2024. 4. 4.
03.27 TIL 구현한 기능: 공 드래그 앤 드롭으로 이동 목적: 사용자가 공을 마우스로 드래그하여 원하는 방향과 강도로 발사할 수 있게 하는 것입니다. 이를 통해 사용자는 게임 내에서 직접적인 상호작용을 경험할 수 있습니다. 사용 이유: 사용자가 게임 내에서 직접적으로 물체를 조작하는 경험을 제공함으로써, 플레이어의 몰입감을 높이고 더 다이내믹한 게임 플레이를 가능하게 하기 위함입니다. 구현 코드 (간단한 로직): 더보기 void Update() { if (Input.GetMouseButtonDown(0)) { StartDrag(); } if (isDragging) { WhileDragging(); } if (Input.GetMouseButtonUp(0)) { EndDrag(); } } 사용한 기술: 드래그 앤 드롭 .. 2024. 3. 27.
03.18 (TIL-Unity) 새로운 프로젝트 시작! 장르 : 로그류, 싱글플레이, 덱빌딩, 선택의 중요성, 2D 목표 : 스팀 출시 중요하게 생각해야될 것 1.아이템을 어떻게 관리할것인가? 2.저장은 어떻게? 범위는? 3.디자인은? 4.밸런스? 5.사운드 또는 이펙트 효과? 6.스팀 출시를 위해 필요한것? 7.플랫폼은? 8.스토리? 9.사용한기술? 10.유저태스트방법? 11.최적화? 2024. 3. 19.
03.15 (TIL-Unity) 구현한 기능: 함정 생성 시스템 목적: 이 시스템은 게임 환경 내에 플레이어의 경로를 방해하고 게임 플레이에 도전적인 요소를 추가하는 함정을 동적으로 생성합니다. 플레이어는 이 함정들을 피하거나 극복함으로써 게임을 진행해야 합니다. 사용한 스크립트: FootManager 간단한 코드 로직 더보기 void SpawnTraps() { Vector2 floorSize = floorScale * 10f; // 바닥 오브젝트의 크기 계산 Vector3 basePosition = transform.position; // 기준 위치 설정 for (int i = 0; i 2024. 3. 15.
03.14 (TIL-Unity) 구현한 기능: 발판 및 함정 발판 생성 시스템 목적: 이 시스템은 게임 환경 내에서 플레이어가 이동하고 상호작용할 수 있는 발판과 함정 발판을 동적으로 생성합니다. 목적은 게임 내에 도전적인 요소를 추가하고, 플레이어의 탐험 및 문제 해결 능력을 시험하는 것입니다. 사용한 스크립트: BoardManager 간단한 코드 로직 더보기 // 발판을 생성하는 메소드 void SpawnBoards() { // boardSize의 값에 따라 정사각형 그리드 형태로 발판을 생성하는 이중 반복문 for (int x = 0; x 2024. 3. 15.
03.13 (TIL) 시네머신(Cinemachine)이란? 시네머신은 Unity에서 제공하는 고급 카메라 시스템 플러그인으로, 복잡한 카메라 워크와 동적 카메라 컨트롤을 손쉽게 구현할 수 있도록 도와줍니다. 개발자와 시네마틱 크리에이터가 게임 내에서 영화 같은 카메라 이동, 스무스한 카메라 추적, 멀티 카메라 설정 등을 구현할 수 있게 해줍니다. 시네머신은 무료로 제공되며, Unity 프로젝트에 손쉽게 추가하여 사용할 수 있습니다. 장점: 유연성과 강력한 컨트롤: 다양한 카메라 워크와 행동을 미리 정의된 모듈을 통해 쉽게 설정할 수 있습니다. 시간 절약: 시네마틱 컷씬이나 카메라 워크를 수동으로 코딩하는 것에 비해 훨씬 빠르고 효율적으로 구현할 수 있습니다. 직관적인 사용자 인터페이스: 시각적 툴과 인터페이스를 통해 카메라 .. 2024. 3. 15.
03.12 (TIL) Attribute 사용 경험 및 설명 Attribute는 클래스, 메서드, 변수 등의 선언에 추가 정보를 제공하는 방법으로, 메타데이터 형태로 사용됩니다. Unity에서는 Attribute를 사용하여 인스펙터 창에서의 변수 표시 방식을 커스터마이즈하거나, 특정 메서드가 에디터 상에서 특정 시점에 자동으로 호출되도록 설정하는 등 다양한 목적으로 활용됩니다. 사용한 경험: Unity 프로젝트에서 [SerializeField] Attribute를 자주 사용했습니다. 이 Attribute를 사용하여 private 필드라도 Unity 인스펙터에서 수정할 수 있도록 했습니다. 이 방법은 데이터 캡슐화를 유지하면서도, 에디터를 통해 쉽게 값을 조정할 수 있게 해주어 개발 과정을 더욱 효율적으로 만들었습니다. usin.. 2024. 3. 12.
03.11 (TIL) 프리팹(Prefab)이란? Unity에서 프리팹(Prefab)은 재사용 가능한 게임 오브젝트 템플릿입니다. 프리팹을 사용하면 설정된 속성, 컴포넌트, 자식 오브젝트를 포함하는 게임 오브젝트를 미리 만들어 놓고, 이를 게임 씬에 여러 번 반복해서 사용할 수 있습니다. 프리팹 시스템을 통해 게임 개발의 효율성을 높이고, 일관성을 유지하며, 쉽게 관리할 수 있습니다. 사용 방법: 프리팹 생성: 씬에 게임 오브젝트를 생성하고, 원하는 컴포넌트와 설정을 적용합니다. 그 후, 이 오브젝트를 프로젝트 뷰로 드래그하여 프리팹으로 만듭니다. 프리팹 인스턴스화: 프리팹은 프로젝트 뷰에 저장되며, 씬에 여러 번 드래그하여 인스턴스화할 수 있습니다. 모든 인스턴스는 원본 프리팹을 참조하기 때문에, 프리팹을 수정하면 모든 인스.. 2024. 3. 12.