목록분류 전체보기 (58)
시작은 0부터
개인정보 처리방침 1. 개인정보의 처리 목적 (‘https://codingdiary1.tistory.com/’이하 ‘HookHook’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등 2. 개인정보의 처리 및 보유 기간 ① (‘https://codingdiary1.tistory.com/' 이하 ‘HookHook’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다. ② 구체..
[ 배열 ] string charactorName = possibleNames[0]; possibleNames 배열 첫번째(인덱스0) 값을 가져와서 charactorName 이라는 새로운 string형 변수에 넣겠다는 뜻이다. 배열의 개수보다 큰 인덱스값을 넣으면 IndexOutOfBounds 라는 예외상황이 발생한다. possibleNames 는 0부터 possibleNames.Length-1까지 인덱스를 가질 수 있다. 배열 범위 내 랜덤 값 넣기 int randomNameIndex = Random.Range(0, possibleNames.Length); 배열에 값을 넣기 위해서는 new 를 통해서 메모리 할당을 해야한다. int[] array = new int[5]; 기존 배열에 새로 할당한다는 것..
[ 변수 ] 값을 담을 수 있는 크기의 단위 int < long < decimal < biginteger(스트링으로 데이터를 담은 상태에서 숫자로 전환해서 값을 환산) 정수 리터럴 10진수 : 접두사가 없음 16진수 : 0x 또는 0X 접두사 사용 float : 1234.01f double : 1234D 또는 1234.1 (소수점이 있으면 자동으로 double로 인식) decimal : 1234M var 는 값을 입력과 동시에 데이터형이 지정된다. ( var a = 1f : a는 float으로 변환. ) - 컴파일러가 데이터 형식을 판단하도록 하는 키워드. - 클래스 내부에서 멤버변수로 사용할 수 없다. object 는 참조. 데이터형이 지정되지 않음. [ 함수(메소드) ] void 형식의 함수안에서 계..
오늘 작업 시간 1.25MH(10H) "검색은 내가 원하는 코드를 구현하기 위한 '키워드'를 찾는 과정이다." 교수님의 말씀을 듣고나서 맨땅에 헤딩하는 격으로 아는 범위 안에서 조금씩 코드를 수정해보면서 될 때까지 기능구현을 위해 매달리던 나의 방식이 잘못되었음을 느꼈다. 기존에는 막히는 부분은 검색을 해서 원하는 코드가 있을 경우 원리가 이해가 되는 경우 가져오고, 원하는 코드를 찾지 못할 때는 그냥 아는 범위 내에서 구현하려고 했었다. 나의 검색실력의 문제도 있겠지만 애초에 내가 원하는 바와 정확히 일치하는 코드를 구하는 것은 어려울 것이다. 구글링은 코드를 찾는 것이 목적이 아닌, 내가 구현하고자 하는 기능의 작동 원리를 파악하기 위한 키워드들을 하나씩 알아가는 과정이다. 성격상 뭔가 될것같다 싶으..
오늘 작업 시간 : 0.75MH(6H) [ 맵 수정 ] - 부스터 발판 비주얼 수정 - 길이 이어지지 않는 곳은 진입을 못하도록 나무로 막음. [ 플레이어 상호작용 오브젝트 추가 ] - 진입금지 표지판 : RigidBody를 달아놓아 플레이어가 부딪히는 힘에 따라 날아가도록 구현했다. 다만, 사용하는 메쉬의 문제인지 메쉬콜라이더를 적용하면 땅을 뚫고 땅밑으로 꺼지는 현상이 일어나는데 Convex 체크를 해서 일단은 막았지만 이 경우 콜라이더 모양이 삼각형이 되어 충돌시 자연스럽게 넘어지지 않고 밀려나는 현상이 있다. - 주차장 차단기 : 몸통은 고정, 차단기는 플레이어와 접촉시 AddComponent()를 이용해 몸통에 고정되어있다가 플레이어와 접촉하면 떨어져나가는 방식을 구현. [ 아이템 추가 구현 ]..
오늘 작업 시간 : 1.25MH(10h) 어제부터 오늘까지 '자신'을 제외한 플레이어에게만 충돌 판정이 되는 미사일 아이템을 구현하기 위해 종일 매달렸다. 견문이 좁아 조건문만 이리저리 수정해가면서 사실상 큰 차이가 없는 접근방법으로 자기자신을 구분하려고 했지만 실패했다. PhotonView.IsMine 인 플레이어만 Awake 에서 Tag 를 변경하여 다른 플레이어와 구분하는 방법을 알려준 동기의 조언을 참고하여 태그를 바꿔봤지만 잘 되지 않아, 다른 접근법들을 이용하여 적용해보았지만 잘 되지 않았다. 그리고 태그 변경으로 구분하는 방법을 알려준 동기분의 추가적인 조언을 받아 자신을 구분하는 방법을 해결하였다. 그리고 이 방법이 나에게는 너무도 놀라워 기록해둔다. 플레이어가 미사일을 생성할 때, 미사일..
오늘 작업 시간 : 1.25MH(10H) Vector3.forward : '로컬' 좌표 기준으로 앞방향을 나타낸다. transform.forward : '월드' 좌표 기준으로 앞방향을 나타낸다. 미사일 아이템을 구현하는데 플레이어의 앞방향을 가져와서 대입하기 위해 미사일 오브젝트의 transform.forward 에 플레이어의 transform.forward를 대입하고, rotation 값도 마찬가지로 대입하는 방법으로 간단하게 구현해보려고 했는데 왜 이상한 방향으로 나가나 했는데 역시나 접근방법이 틀렸었다. 미사일을 쏘는 문제도 싱글 게임에서는 Instantiate() 함수를 통해 생성할 때 인자값으로 부모를 설정하는 Transform 값을 넣어줄 수 있지만, 현재 멀티플레이를 위해 사용하는 Photo..
오늘 작업 시간 - 1MH(8H) NavMeshAgent 를 활용하여 AI의 이동을 구현하는 과정에서 물리 기능이나 다양한 변수 상황에 따른 처리를 적용하는 방법이 많이 까다롭고 막막해서 일단은 PVP 에 중점을 두어 플레이어 간의 상호 처리를 우선적으로 해결하기로 하였다. 이 문제를 코딩을 잘하는 동기분에게 말씀드렸더니 ML Agent 라는 다른 방법을 제안해주셨다. 유니티를 몇 달째 사용하면서도 정작 사용하는 코드나 함수의 폭이 좁은 와중에, 완전히 새로운 AI 구현 방법을 알게 되었다. https://unity.com/kr/products/machine-learning-agents 머신러닝 에이전트 심층 학습 기술을 활용하는 툴킷으로 지능적인 반응형 에이전트를 만들어 보세요. unity.com 맵을..