본문 바로가기

TIL74

01.15 (TIL-Unity) 인벤토리 시스템 추가 구현: 아이템 선택과 인벤토리 내 버튼 활성화/비활성화 로직. 인벤토리의 토글 기능과 UI 상호작용. 아이템 믹스 시스템: 두 개의 아이템을 조합하여 새로운 아이템을 생성하는 ItemMix 스크립트의 구현. 조합 로직 및 조합 가능 여부를 판단하는 방법. 인벤토리 시스템과의 통합을 통해 사용자 인터페이스에서 아이템을 선택하고 조합하는 기능 추가 아직은 기능구현중! 내일 아마 완료될예정! 2024. 1. 15.
01.12 (TIL-Unity) 인벤토리 시스템의 기능적 구현 Inventory 클래스에서는 아이템을 추가, 선택, 사용 및 버리는 기능을 구현했습니다. 특히, 아이템의 타입에 따라 다른 동작(예: 중요한 아이템은 사용해도 소모되지 않음)을 구현하는 방법을 포함합니다. 유익한 점: 아이템의 속성(예: 타입)에 따라 사용자 인터페이스(UI)와 상호작용을 다르게 설정하는 방법을 배울 수 있었습니다. NullReferenceException 오류 해결 Unity 개발에서 가장 흔하게 마주치는 오류 중 하나입니다. 이 오류는 참조하려는 객체가 null일 때 발생합니다. 오류 원인 파악: 스크립트에서 참조하려는 객체가 초기화되지 않았는지, 혹은 잘못된 객체를 참조하고 있는지 확인합니다. 초기화 확인: Awake, Start 또는 사용 전에 객체.. 2024. 1. 12.
01.11 (TIL-Unity) 앉기기능 추가 앉기 기능을 추가하는 이유는 방탈출게임을 제작하면서 플레이어가 앉아야지만 볼수있는 오브젝트나 힌트들을 위해 추가를 결정했습니다. 내가 생각한 기능구현을 위한 방법 앉기 기능 활성화: 플레이어가 앉기 버튼을 누를 때마다 앉아 있는 상태와 서 있던 상태를 토글합니다. 이동 속도 조절: 플레이어가 앉아 있을 때 이동 속도를 감소시킵니다. Collider 크기 조절: 플레이어가 앉아 있을 때 Collider의 높이를 줄입니다. 카메라 위치 조절: 플레이어가 앉아 있을 때 카메라의 높이를 줄입니다. 인스펙터에서 조절 가능한 변수 추가: 감소하는 수치들을 인스펙터에서 조절할 수 있도록 public 변수로 선언합니다. 변수 선언 및 초기화 더보기 [Header("Sit")] public float si.. 2024. 1. 11.
01.10 (TIL-Unity) 부트캠프 최종프로젝트 시작 1일차 오늘은 팀원분들과 스크럼을 진행하면서 게임의 기획과 방향성 그리고 1주차동안 제작할 프로토타입에 대한 회의 장르 : 3D 방탈출 ( 컨셉은 정하는중) 예시용 게임 :Tales of Escape 카메라 움직임(임시) 시점은 1인칭으로 진행 마우스의 움직임을 따라 카메라 이동 플레이어 움직임(임시) 키보드(w,a,s,d)에 따라 앉기(ctrl, c) - 앉을 시 시야가 달라짐으로 인해 더욱 많은 장소 탐색 가능 점프(space) - 앉기와 같은 이유 아이템 상호작용(임시) 상호작용 가능한 아이템이 있을 시 하이라이트 되어 강조되어 보임 상호작용은 마우스 좌클릭 클릭 시 인벤토리(아래서 다룸)에 추가 우클릭 시 아이템 버리기기 인벤토리(임시) 위 게임과 같이 인벤토리는 여러 .. 2024. 1. 10.
01.09 (TIL-Unity) 3-3 팀프로젝트 발표회 게임이름 : 냥코의 모험!! 한마리의 고양의 모험! 각종 함정과 장애물을 피하며 최종 지점까지 도달하는 게임! 와이어프레임 구현 사항 인공 캐릭터의 이동 및 기본 동작: 키보드 또는 터치 입력을 통해 주인공 캐릭터를 움직이고, 점프할 수 있어야 합니다. 이동 및 점프 애니메이션을 포함하여 부드러운 이동 효과를 구현하세요. 레벨 디자인 및 적절한 게임 오브젝트 배치: 최소한 2개 이상의 게임 레벨을 디자인하고 구현하세요. 각 레벨에는 적절한 플랫폼, 장애물, 보상 아이템 등이 포함되어야 합니다. 충돌 처리 및 피해량 계산: 주인공 캐릭터와 환경 또는 적 캐릭터 사이의 충돌을 처리하고, 피해량을 계산하여 게임 내에서 적절한 게임 오브젝트를 활용하세요. UI/UX 요소: 게임 시작 및.. 2024. 1. 9.
01.08 (TIL-Unity) 패럴랙스 스크롤링을 사용하여 오브젝트들이 지속적으로 나타나게 하는 것은 여러 방법으로 구현할 수 있으며, 게임의 디자인과 목표에 따라 다를 수 있다. 오브젝트 풀링(Object Pooling): 오브젝트 풀링은 게임의 성능을 향상시키는 데 유용한 기법. 이 방법은 게임 시작 시 미리 여러 개의 오브젝트(예: 적, 장애물, 아이템)를 생성하고, 필요할 때마다 이들을 재사용. 오브젝트가 화면 밖으로 나가거나 사용되지 않을 때, 이를 비활성화하고 필요할 때 다시 활성화하여 다른 위치에서 사용. 이를 통해 새로운 오브젝트를 계속 생성하는 것보다 효율적으로 관리할 수 있다. 무한 스크롤링(Infinite Scrolling): 플레이어가 게임을 진행함에 따라, 새로운 오브젝트들이 지속적으로 생성되고 이전의 오브젝트.. 2024. 1. 8.
01.05 (TIL-Unity) Material 유니티(Unity)에서 메테리얼(Material)은 게임 오브젝트의 표면을 어떻게 보이게 할지 결정하는 중요한 구성 요소 1. Rendering Mode: 메테리얼이 어떻게 렌더링될지를 결정 Opaque (불투명): 가장 기본적인 렌더링 모드로, 투명도 없이 완전히 불투명한 메테리얼을 생성, 표면이 빛을 전혀 통과시키지 않을 때 사용 Cutout (컷아웃): 텍스처 내의 특정 투명도 값 아래의 부분을 완전히 제거하여 불투명한 부분과 투명한 부분이 명확하게 구분되게 함, 예를 들어 나뭇잎이나 철망 같은 물체에 사용 Fade (페이드): 텍스처의 투명도를 부드럽게 조절하여 점진적인 투명 효과를 만듬, 예를 들어 유령이나 안개 같은 반투명한 효과를 낼 때 사용 Transparent (투명): .. 2024. 1. 5.
01.04 (TIL-Unity) 씬 인덱스(Scene Index) Unity에서 각각의 씬(Scene)을 구별하기 위해 사용하는 숫자 Unity의 빌드 설정(Build Settings)에서 씬들이 나열되는 순서에 따라 각 씬에 자동으로 할당 예시코드 더보기 using UnityEngine; using UnityEngine.SceneManagement; public class TutorialDoor : MonoBehaviour { private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Player") { // 현재 씬의 인덱스를 가져옴 int currentSceneIndex = SceneManager.GetActiveScene().buil.. 2024. 1. 4.
01.03 (TIL-Unity) 이동하는 발판 제작 이동하는 발판 제작: 발판이 되는 오브젝트에 Rigidbody2D 컴포넌트를 추가하고, 특정 경로를 따라 이동하도록 스크립트를 작성 사용한코드 더보기 using UnityEngine; public class MovingPlatform : MonoBehaviour { public Transform[] points; // 이동할 위치들을 저장하는 배열. Unity 에디터에서 설정 가능 public float speed = 2f; // 이동 속도. Unity 에디터에서 조절 가능 private int currentPointIndex = 0; // 현재 목표 위치의 인덱스를 저장하는 변수 void Update() { // 매 프레임마다 플랫폼을 현재 위치에서 다음 목표 위치(points[cu.. 2024. 1. 3.
01.02 (TIL-Unity) Rigidbody2D 컴포넌트의 velocity 속성(점프관련) 초기코드 더보기 private void Update() { // 매 프레임마다 지면에 있는지 확인 isGrounded = CheckIfGrounded(); } private void FixedUpdate() { // 물리 업데이트에서 이동 적용 ApplyMovement(_movementDirection); } private void Jump() { // 지면에 있을 때만 점프 실행 if (isGrounded) { Debug.Log("Jumping"); _rigidbody.velocity = new Vector2(_rigidbody.velocity.x, jumpForce); } } private void ApplyMovement(Vector2.. 2024. 1. 2.