본문 바로가기

Development/Unity27

무한 맵 만들기 [내일배움캠프 44일차 TIL] '길건너 친구들'이라는 게임을 모작하면서, 가장 기본이 되는 맵을 어떻게 할 것인가에 대한 고민이 많았다.똑같은 맵 지형이 반복되기 때문에 이걸 길게 만드는 것도 힘들뿐더러 끝이 정해져 있기 때문에 게임의 재미가 떨어진다.그래서 하나의 맵 지형을 만들어서 프리팹화하고, 오브젝트 풀을 이용해 플레이어가 움직였을 때 일정 범위 내라면 맵을 생성하는 로직을 구현했다. [ 무한 맵 만들기 ]전체 코드using System.Collections.Generic;using UnityEngine;public class MapManager : MonoBehaviour{ [SerializeField] private Camera camera; public GameObject un.. 2024. 6. 18.
[내일배움캠프 43일차 TIL] Input System C# 제너레이트 활용 2024.05.10 - [Coding/Unity] - [내일배움캠프 19일차 TIL] New Input System, 이벤트 처리 [내일배움캠프 19일차 TIL] New Input System, 이벤트 처리사용자가 플레이어를 움직이기 위해서 키보드 방향키를 눌렀다. 그러면 플레이어는 이동에 대한 입력을 받은 것이다. 우리는 입력이 들어오면 이동과 관련된 모든 메서드들이 실행되기를 원한siknyang.tistory.com지금까지는 계속 Player Input component로 이벤트를 호출하는 방식을 사용했다. 2024.06.12 - [Coding/Unity] - [내일배움캠프 40일차 TIL] Input System 다이렉트, 임베디드, 액션 에셋, C# 제너레이트, Action Properties [.. 2024. 6. 18.
[내일배움캠프 42일차 TIL] 파티클 시스템, 애니메이션 이벤트, 사운드 [ 파티클 시스템(Particle System) ]반짝이는 효과나 마법진 같은 이펙트를 제작하는 데 활용되는 컴포넌트이다.이펙트에 사용되는 오브젝트 하나하나를 파티클이라고 부르며, 파티클 시스템은 이런 수천 개의 파티클의 동작과 생애를 체계적으로 관리한다.파티클 시스템의 주요 컴포넌트는 emitter(발사체), particles(파티클), animator(애니메이터), renderer(렌더러) 등이 있다.시간에 따른 파티클의 행동을 시뮬레이션하면서 각 파티클의 위치, 속도, 수명, 색상, 크기 등의 정보를 저장한다.파티클 시스템은 최대 파티클 수 제한, 적용 범위 제한 등과 같은 기능으로 성능 최적화를 한다. 주요 모듈Main 모듈가장 기본적인 값인 파티클의 속도, 크기, 회전, 최대 개수를 정할 수 있.. 2024. 6. 14.
[내일배움캠프 40일차 TIL] Input System 다이렉트, 임베디드, 액션 에셋, C# 제너레이트, Action Properties [ InputSystem ]기존에는 인풋 액션 창에서 키를 직접 설정하고 인풋 시스템 컴포넌트를 추가해서 사용했다. 하지만 코드 작성으로 인풋 시스템을 사용할 수도 있다.캐릭터가 A키와 D키를 통해 좌우로 움직이는 로직을 코드를 사용해서 구현해보자. 우선 기본적으로 스크립트에서 인풋 시스템을 사용하려면 UnityEngine.InputSystem 네임스페이스가 있어야 한다.using UnityEngine.InputSystem; 다이렉트다이렉트 방식은 코드로 모든 입력을 받아오는 로직을 작성한다.public float dir;Keyboard keyboard;void Start(){ keyboard = Keyboard.current; // 현재 연결된 기기 받아옴}void Update(){ if(keyboar.. 2024. 6. 12.
[내일배움캠프 38일차 TIL] 아이템 데이터 참조 에러 트러블 슈팅 [ 아이템 데이터 NullReferenceException 에러 ]트러블 슈팅클릭한 오브젝트, 놓인 오브젝트, 들고 있는 오브젝트 비교해서 모두 동일하면 해당 오브젝트를 보이게 하는 코드가 있다. 기존에는 테스트를 위해 전역 변수로 직접 인스펙터 창에서 오브젝트를 할당해서 사용했는데, 팀원들과 작업물을 합치면서 플레이어가 실제로 장착하고 있는 아이템의 정보를 가져오는 코드로 수정했다. 하지만 플레이어가 항상 아이템을 장착하고 있는 것이 아니기 때문에, 아이템을 장착하고 있지 않을 때 클릭을 하면 NullReferenceException 에러가 뜬다. GameObject curItem = CharacterManager.Instance.Player.equipItem.ItemPrefab;if (curItem .. 2024. 6. 10.
[내일배움캠프 35일차 TIL] 컴포넌트에 데이터 자동 할당, Can't add script 에러 [ 오브젝트 컴포넌트에 플레이어 위치 자동 할당 ]트러블 슈팅건물 에셋을 가져왔는데, 기존에 있던 임시 플레이어를 삭제하고 새로운 플레이어를 생성했더니 기존에 할당되어 있던 플레이어 오브젝트가 모두 None이 되면서 문이 열리지 않게 되었다. 문 외에도 서랍장, 창문 등 열리고 닫히는 오브젝트와의 상호작용 자체가 되지 않았다. 모든 것을 할당하기에는 오브젝트가 몇 백개라서 현실적으로 일일이 할당하기란 불가능했다. 오브젝트가 프리팹이라서 프로젝트에서 프리팹을 수정하면 되지 않을까했는데, 스크립트가 있는 오브젝트가 자식 오브젝트라서 플레이어를 할당할 수 없었다. 그리고 오브젝트 수도 엄청 많아서 이것도 현실적으로 불가능했다. 그래서 각 오브젝트에 있는 스크립트를 수정하는 방향으로 해결했다. 문을 여닫고 싶은.. 2024. 6. 4.
반응형