내일배움캠프 88

유니티 숙련주차 팀프로젝트 - 병합 완료

제출까지 2일남은 시점, 제작한 내용을 모두 병합하였습니다. 아이템 관련 내용을 당담하였기 때문에, 개인시연으로는 아이템 관련 부분만 진행하였습니다. Tab 키를 누르면 인벤토리가 열리고, 인벤토리에서 장비, 제작창을 열 수 있는 버튼을 만들어주었습니다.장비 탭에서는 현재 플레이어의 상태를 볼 수 있으며, 플레이어의 방어력, 추가 공격력등 장비의 스테이터스를 볼 수 있습니다. 단, 현재 장비의 스텟 변화가 실제 캐릭터에 적용된 상태는 아닙니다.장비, 소모품을 사용한 버프로 인한 스테이터스 변화는 별도의 스크립트가 저장하고 있으며, 이 내용을 캐릭터에 연결해주는 작업이 남았습니다.더보기public class CharacterBuffManager : MonoBehaviour{ private Equipm..

직렬화 특강 정리 - CSV, XML, Json 등

직렬화객체를 바이트 배열로 바꾸어 저장하는것프로그램의 기반유니티는 직렬화 데이터들의 집합 이라고 할 수 있음Scene,SO, meta, prefab 이 모두 직렬화 데이터메모장을 통해 prefab 등의 파일을 열어볼경우, YAML 형태로 직렬화 되어있는것을 확인할 수 있음역 직렬화저장한 데이터를 바이트 배열으로 바꾸어, 다시 객체로 변환하는것직렬화, 역직렬화의 과정코드들이 메모리에 산재됨재시작시 사용되는 메모리의 위치가 변경, 저장된 메모리는 이전 위치에 유지됨흩어져있는 내용을 정리해서 나열 → 직렬화나열된 값을 원래 자리에 되돌림 → 역직렬화직렬화를 한 뒤, 나중에 역직렬화가 가능함→ 직렬화를 통해 저장/통신 이 가능함 초기 직렬화0, 1 으로 데이터를 나열하여 사용 (바이트 배열)→ 컴퓨터는 이해하지..

유니티 숙련주차 팀 프로젝트 - 제작 시스템 추가

제작 시스템과 인벤토리 기반을 완성하였습니다.※ 아직 TMP에 한글폰트를 추가하지 않아서 글자가 모두 깨집니다. 제작에 필요한 아이템이 인벤토리에 있으면 제작 UI에 제작 가능한 아이템 목록이 나타나며, 이때 제작 가능한 아이템의 아이콘을 클릭하면 제작 재료 정보와 함께 제작 버튼이 활성화되도록 만들었습니다. 또한, 인벤토리에서 아이템 선택시, 상단에 아이템 정보를 출력하는 시스템을 제작하였습니다. 필요한 작업인벤토리는 플레이어파트를 당담한 팀원분에게 요청하여 파사드 패턴인 Player 클래스에서 접근 가능하도록 했습니다.단, 아직 제작시스템, 인벤토리 UI를 여는 입력이 완성되지 않았기 때문에 임시로 Update를 통해서 실시간으로 인벤토리를 확인하고, 제작 가능한 목록을 확인하고 있습니다.이 부분에서..

팀프로젝트 제작 시작 - 크래프팅 시스템

숙련주차 팀 프로젝트 - 생존게임 에서 아이템, 인벤토리, 자원 관련 부분을 당담하게 되었습니다.인벤토리와 아이템 관련 내용 기반을 구현한 뒤, 가장 문제가 될것으로 예상되는 크래프팅 시스템 기초를 다뤄보았습니다. 먼저 아이템 데이터를 저장하는 스크립터블 오브젝트 입니다.여기서 isCraftable 이 true일 경우 이 아이템은 제작이 가능한 아이템이며, 제작에 필요한 재료를 저장하는 직렬화 클래스 craftData 를 통해 어떤 재료가 얼마나 들어갈지를 정해주었습니다.[CreateAssetMenu(fileName = "Item", menuName = "Item/New Item")]public class ItemData : ScriptableObject{ [Header("Item Data")] ..

2차 디자인패턴 특강 정리 - 이벤트기반 프로그래밍, 명령패턴

이벤트 기반 프로그래밍 - 옵저버 패턴, 이벤트 버스 패턴효율적으로 프로그램이 실행되도록 설계할 수 있는 패턴Pub- Sub 패턴 이라고도함 (발행 - 구독 패턴)발행자 1 - 구독자 1 : 함수 직접 호출 → 이 함수에 반응해야하는 함수가 늘어나면 일일이 호출해야함 발행자 1 - 구독자 다수 : 옵저버 패턴 사용 → 여러개의 함수에서 특정 함수를 호출하고싶으면 특정 함수를 모든 델리게이트에 등록해야함 발행자 다수 - 구독자 다수 : 이벤트 버스 패턴 사용 → 등록과 호출을 하나의 스크립트에서 전담옵저버 패턴발행자 1 - 구독자 n 의 관계이벤트 발생시, 발행자가 이벤트 발생을 알리고 구독자들이 행동하는 패턴델리게이트를 통해 구현 가능public event Action 의 형태로 사용하는것이 옵저버 패턴..

유니티 숙련주차 개인프로젝트 마무리?

추가 구현이 필요한 부분버프 아이템캐릭터 추가 및 애니메이션 추가추가 상호작용 오브젝트 (창고 등)readme.... 제출 후 작성 예정... 여러모로 버그 수정을 하다가 시간을 너무 많이 써버렸습니다... 플랫폼 로직을 잘못짜서 수정한 내용 (++ 연산 진행 후, 도착판정을 내서 실제 도착지 전 노드에서 도착판정 발생)벽타기 관련 오류 (측면 이동시 로직) 특히 대각선으로 발사하는 형태의 대포의 경우, 제데로 날라가지 않는 문제가 발생했는데,이동이 velocity를 직접 수정하는 방식이였기 때문에, 이동 입력이 없으면 x, y velocity가 0이 되서 수직으로는 날라가지만, 수평으로는 이동이 불가능한 경우였습니다.//캐릭터 움직이기public void Move(){ //입력으로부터 움직일 방향..

1차 디자인패턴 특강 정리

디자인패턴복잡하고 난해한 문제를 패턴화해서 풀기위해 사용다른 개발자와 소통할때, 디자인패턴을 통해 간단하게 소통할 수 있음주의사항무작정 사용하는것은 지양해야함. 적절한 위치에 적절하게 사용문제를 풀기위해 사용해야함. 디자인패턴을 쓰기위해 문제를 늘리면 안됨※ 왜 디자인패턴을 사용했는지 설명할 수 있도록 사용해야함싱글톤 패턴중요하고, 유일하게 존재하는 대상에게 쉽게 접근하기위해 사용함접근이 잦은 핵심기능에 대한 전역접 접근을 허용하기위해 사용함ex) Manager 계열 클래스들 - 하나만 존재해야하며, 다양한 위치에서 자주 접근함구현유일해야한다 : 싱글톤 패턴이 사용된 클래스가 추가로 생성되는것을 막을 방법이 필요함전역적으로 접근 가능해야한다 : public static 을 사용하여 전역접근 구현publi..

내일배움캠프 28일차 TIL - 시야각 내의 오브젝트 판단하기

스크립트의 필드에 오브젝트가 사용할 시야각(Field Of View) 를 float 형으로 선언하고, 이를통해 다른 오브젝트가 각도 이내에 들었는지 알아내는 방법입니다. 먼저 Mathf.Cos 를 사용하여, float 형인 FOV를 코사인값(각도값) 으로 변환합니다private float fov = 45f;private float threshold;public Transform target;public bool IsInFov(){ threshold = Mathf.Cos(fov * Mathf.Deg2Rad / 2);} 여기서 fov 값에 Mathf.Deg2Rad를 곱하여 시야각인 45도를 라디안 값으로 변환해줍니다.이 라디안 값을 Mathf.Cos() 를 사용하여 $Cos  \Theta $ 값을 구해..