개발의 시작 TIL(Today I Learned) 85

개발의 시작 TIL(Today I Learned) 오늘의 작업 - 5 -

오늘의 작업플레이어 조작 시스템 보완 세부 사항인터렉션 적용하는 부분 수정 아이템을 줍고 인벤토리에 추가하는 코드 작성 사용아이템 실제 동작 확인 작업하면서 고민 했던 점인터렉션 적용시 레이 맞은 아이템 오브젝트가 상호작용 용도로 존재하는지 플레이어가 사용가능한지 여부에 따라 같은 키를 눌러도 다른 결과가 나오게 해야 한다정보전달 , 레이를 맞은 아이템의 아이템 데이터를 가져와야 하는데 아이템의 종류가 많아지더라도 추가 작업이 안생기게 코드를 작성해야한다컴포넌트로 가져오는 스크립트에는 속성을 인스펙터에서 캐싱해줄 수 있는데 그러지말고 공통적으로 공유하는 클래스에 캐싱용 클래스를 만들어 최대한 정보전달에 있어서 단순하게 해야한다액션을 사용해서 input 키에 대응고민 해결 한 부분인터렉션에 적용되는 아이템..

개발의 시작 TIL(Today I Learned) 오늘의 작업 -4-

상호작용이 가능한 상태로 만들기아이템 기능이 존재하는 아이템이라면 장착해서 기능 사용이 가능하게 만들기상호작용이 가능하게 만들기플레이어 기능 중 상호작용은 저희가 만드는 게임에서 나름대로 중요한 기능이라고 생각합니다. 퍼즐을 통해 결과를 구현하는데 필요하기 때문입니다.그래서 InputAction 에 상호작용 키를 설정하고 화면 가운데에서 발사 되는 레이에 적중되고 키 입력을 기준으로  해당 오브젝트에 설정 해놓은 인터페이스 가 있다면 결과로써의 기능을 호출하게 끔 작성했습니다.  고민했던 점본래 계획이라면 상호작용에 해당되는 상태를 만들어서 상호작용 일체를 해당상태에서 처리하고자 했습니다.하지만 매번 상호작용상태로 넘어가면 플레이하는 불필요한 시간을 소비시키는 것 같아서 일반적인 상호작용은 상태에서 안들..

개발의 시작 TIL(Today I Learned) 모의 면접 -2-

모의 면접의 주제자기 소개Update의 종류와 각각의 특징들float와 int의 차이점자기 소개자기소개 부분은 면접 준비를 하면서도 가장 어려워 했던 부분 이었습니다.이제 막 개발에 대해 공부를 시작을 해서 어떤부분을 내새워 할지 감이 잡히지 않았습니다. 하지만 내새워야 할 부분을 굳이 찾는다면 저는 유한상태머신을 구현을 내새우고 싶습니다.지금까지 팀 프로젝트에서도 다른 기능 구현보다 상태머신을 구현하여 플레이어와 몬스터기능을 구현했던 경험이 많기 때문입니다. 그리고 앞으로도 상태머신을 통한 기능들을 구현하며 또 배우고 싶습니다. --Update의 종류와 각각의 특징들Update() - 스크립트가 enabled 상태일때, 매 프레임마다 호출됩니다. 일반적으로 가장 빈번하게 사용되는 함수이며, 물리 효과가..

개발의 시작 TIL(Today I Learned) 최종 프로젝트 오늘의 작업 3

오늘의 작업 : 플레이어 이동 구현, 손전등 기능 구현작업을 하며 어려움을 느낀 점- 오늘 작업을 하면서 어제와 같은 고민을 했습니다. 기능 구현 자체는 비교적 빠르게 끝을 냈지만 기능들을 어떻게 처리할지 아니면 어디서 처리해야 할지 고민하며 수정하는 시간이 오늘 작업시간의 대부분을 차지했습니다. 유한상태머신으로 플레이어를 구현하면서 플레이어의 움직임을 어디서 구현해야 할지 고민을 했습니다.앞서 수강한 심화강의에서는 유한상태 플레이어의 움직임을 상태머신의 베이스가 되는 베이스상태머신에서 구현했습니다.처음에는 강의자료의 코드를 보며 베이스 상태머신 스크립트에 움직임 처리를 해주는 코드를 작성했습니다.하지만 따로 만들어 놓은 플레이어 컨트롤러 스크립트를 살펴보고 생각을 수정하게 되었습니다.저희 만들 게임에서..

개발의 시작 TIL(Today I Learned) 최종 프로젝트 오늘의 작업

오늘 실행한 작업귀신의 종류에 맞추어 개별 패턴 매칭 구현유저 사용 아이템 구현귀신의 종류에 맞추어 개별 매칭 구현지금 구현 중인 귀신은 종류마다 개별적인 패턴이 있습니다. 그래서 공격상태가 별도로 구현 되어있습니다문제는 순찰 상태나 추적상태는 귀신 종류와 상관없이 공통으로 사용되는 상태인것에 별개로 공격상태는 종류마다 따로 있다는 것입니다.지금 아이템으로 있는 기능 중 하나가 귀신이 플레이어 인지를 일정시간 못하게 하는것이 있는데 종류에 상관없이 강제로 상태를 정해줘야 했기 때문입니다.이럴경우 종류가 많아질수록 공격상태를 담고있는 스크립트가 추가 되기 때문에 종류가 추가 될수록 아이템 하나의 조건문을 수정해야 하는 문제가 발생 할것이라고 생각 되었습니다.그래서 공격 개별 패턴을 구현 할때 부모 클래스로..

개발의 시작 TIL(Today I Learned) 최종 프로젝트 피드백 적용

피드백 적용어제 튜터님이 코드를 보고 피드백을 해주었습니다.그래서 오늘은 피드백을 코드에 적용하는 작업을 우선적으로 했습니다.  피드백 내용State 안에서 상태 변환 조건을 해당 상태에서 적용하기State 안에서 행동구현 매서드를 코루틴으로 작성하기GhostAttackState를 부모 클래스로 하고 귀신 개별의 패턴을 자식클래스에서 구현하기State 안에서 상태 변환 조건을 해당 상태에서 적용원래는 귀신 클래스에서 플레이어와 귀신 사이의 거리를 업데이트 하고 그 거리에 따른 조건을 걸어서 변환하는 방법을 적용하고 있었습니다. 이번에 적용한 방법은 업데이트문을 최대한 사용하지 않기 위해 거리체크 코드를 코루틴으로 작성하고 여러 상태 중 기본이 되는 상태를 정해서 거리 조건 자체를 해당 상태 중에 작동하는..

개발의 시작 TIL(Today I Learned) 프로젝트 진행 중 느꼈던 중요한 점

그간 하루에도 몇번씩 팀원들과 소통을 했었지만 서로의 코드를 공유하고 리뷰한적은 없어서 오늘은 따로 서로의 코드를 리뷰해보는 시간을 가졌습니다. 팀원들과 코드를 공유하면서 느낀 점각자 생각하는 코드 작성 방식이 다르다 : 매번 까먹어버리는 사실입니다. 같은 기능을 구현하더라도 사람마다 작성되는 코드가 다르다는 걸주석 작성은 중요하다 : 이건 1번 사항과 연관이 있는데 사람마다 코드 작성하는 스타일이 다르다 보니 한번에 코드 파악이 힘들어집니다. 그렇기 때문에 코드에 대한 설명이 곁들여져 있는 주석의 필요성을 다시금 느꼈습니다.기획단계를 함께 거쳐도 같은 구상을 공유하는것이 아니다 : 같이 기획을 했어도 서로 다른 구상이 공유 될 수도 있다는 것을 오늘 알게 되었습니다.  그래서 구상을 좀 더 자세하게 설..

개발의 시작 TIL(Today I Learned) 모의 면접 준비

내일 앞으로 취업을 대비한 모의 면접이 계획 되어 있습니다.그래서 오늘은 면접 준비를 한 내용을 기록하고자 합니다.  모의 면접의 주제 객체지향이란? 유니티 생명주기에 대해서객체지향이란?클래스 : 작업지시서, 설계도 객체 : 완성된 설계도, 설계도를 토대로 만든 사용 가능한 것 인스턴스 : 클래스 정보를 토대로 만든 것 캡슐화, 추상화, 상속, 다형성 캡슐화: 클래스를 독립적으로 만들어서 의존도를 낮춘다 추상화 :클래스에서 공통된 부분을 추출해서 중복 작성을 막는다 상속 : 부모 클래스로부터 공통된 변수나 인터페이스를 물려받는 것을 말한다 다형성 : 같은 종류의 클래스가 같은 메세지에 대해 다른 행동을 하는것을 말합니다.  주로 오버라이딩 오버로딩 형태로 제공 됩니다. ** 추상화랑 상속의 다른점 **추..

개발의 시작 TIL(Today I Learned) 최종 프로젝트 작업

지금까지 한 작업 내용기본 사이클 용 귀신 유한 상태머신 구현아이템 사용 시 발동하는 효과 코드 추가기본 사이클 용 귀신 유한 상태머신 구현 (초기) 귀신의 움직임 패턴 하나하나를 하나의 스크립트로 분리 , 정의각 상태에 따른 움직임 코드로 구현상태가 변환되는 조건 명시기본 사이클 용 귀신 유한 상태머신 구현 ( 구현하면서 어려웠던 점 || 고민)상태가 변환되는 조건을 어떤식으로 구현할지 고민을 했습니다.원인 : 기본적인 변환 조건은 플레이어와 귀신 사이의 거리로 기획을 했으나 나중에 조건을 추가 할 경우를 염두 하고 싶었습니다. 그리고 아이템 중 플레이어의 위치를 귀신이 인지 못하는 느낌의 아이템을 구현 할경우도 대비를 해야 했습니다. 해결 : 거리를 파악하는 코드를 코루틴으로 구성하고 bool 값을 ..

개발의 시작 TIL(Today I Learned) 최종 프로젝트 기획

오늘은 그 동안 최종 프로젝트 기획과 작업 진도에 대해 적어보도록 하겠습니다  제가 맡은 역할은 플레이어를 쫓아오는 귀신(몬스터)를 구현과 아이템입니다.우선적으로 비교적 시간이 많이 들것 같은 귀신 구현 먼저 시작 했습니다.게임이 돌아가는 필요한 기능요소를 필수 구현으로 정의하고 첫번째로 작업기본 기능에 디테일을 추가하는 기능을 추가구현 요소로 정의하고 두번째로 작업마지막으로 시각적인 요소 등 게임을 꾸미는 기능을 최후 순위 구현 요소로 정의작업 시작 후 문제점?귀신은 유한상태머신을 이용해서 만들었고 각각의 상태에 행동에 대한 구현 코드가 있기 때문에 기본요소로 생각을 했었는데 귀신의 종류를 귀신스크립트에서 상속 받아 자식 클래스로 구현하다 보니 공격 상태 스크립트가 개별화 된 패턴처럼 활용이 되어서 처..