반응형 개발875 Tip) VSCode - Getter and Setter 생성 VSCode - Getter and Setter 생성 VSCode에서는 기본적으로 Getter 와 Setter 를 생성을 해주는 기능이 없다. 어쩔수없이 마켓에서 찾아봤는데 Getter and Setter Generator가 있어서 소개하고자 한다. 마켓에서 설치하면 사용방법은 다음과 같다. 짠!. 이렇게 쉽게 Getter 와 Setter가 생성된다. 접근제한에 대한 고려로 인해서 필수로 작업하는 기능이기 때문에 한번 설치해서 사용하면 편리하다. ★★★☆☆ 2020. 1. 31. 잡학지식) 인스턴스 던전(Instance Dungeon) 인스턴스 던전(Instance Dungeon) 인스턴스 던전은 필드의 던전과 다르게 특정 제한된 인원만 따로 지형을 생성해서 플레이하는 던전을 말한다. 한국에서는 인스턴스 던전을 줄여서 '인던'이라고 표현을 많이한다. RPG에서 스토리 모드나, 파티를 맺어서 하는 진행하는 시스템에서 많이 사용하는 방식이다. 인스턴스의 던전이기 때문에 게임의 설계가 디테일하게 되어야한다. 한정된 인원이 제한된 지형에서 플레이를 하기 때문이다. 유명한 게임 월드오브 워크래프트에서 차용한 시스템으로 많이 알려져있다. 시초는 '에버퀘스트'에서 처음으로 인스턴스 던전의 개념이 사용되었다고 한다. ★★☆☆☆ 2020. 1. 29. 알고리즘) 영향도 알고리즘(Influence Map Algorithm) 영향도 알고리즘(Influence Map Algorithm) 영향도 알고리즘은 어떤 선택을 하는 과정에서 많은 선택지 중에서 가장 좋은 선택을 할 수 있는 알고리즘이다. 여러 가지 다중 조건의 결과를 격자의 그리드인 영역에 가중치를 계속 추가하고 난 이후에 가중치를 기준으로 원하는 선택을 한다. 원리는 map에 가중치에 대한 값을 계속 누적하는 것으로 가중치에 대한 계산을 한다. 격자의 맵이 있는 상황에서 다중 조건에 의한 선택을 할 때 사용한다. Unity 에서 간단하게 원형으로 영향도에 대한걸 처리해보자. 먼저 영향도에 대한 체크를할 기준이 되는 오브젝트를 생성하고 기준이 되는 오브젝트의 주위 반경에 영향도 가중치를 추가한다. 오브젝트와 근접한 위치의 큐브는 좀더 영향도 있는 것을 나타내기 위해서 R.. 2020. 1. 22. 코드 ) 부채꼴 충돌 부채꼴 충돌 간단히 보채골 충돌에 대한 판단을 하는 코드이다. 벡터의 지름을 계산해서 판단한다. public class CirSector : MonoBehaviour { public Transform m_Target; public float m_fAngle = 45f; public float m_fDistance = 10f; public bool m_bCollision = false; Vector3 direction; float dotValue = 0f; void Update () { dotValue = Mathf.Cos(Mathf.Deg2Rad * (this.m_fAngle / 2)); direction = this.m_Target.position - transform.position; if (dire.. 2020. 1. 20. 개인생각) 좋은 피드백 과 나쁜 피드백 구분하기 좋은 피드백 과 나쁜 피드백 구분하기 피드백(Feed Back) 피드백은 어떤 작업이나 결과에 대한 정보나 의견을 주는 행위로 더 좋은 방향을 선택하는 과정에서는 필수적인 부분이다. 그러나 피드백을 받고 그 피드백을 수용하는 과정에서 좋은 피드백과 나쁜 피드백이 생기게되는데 그 상황에서 적당히 걸러 들어야하는 상황에 대한 이야기를 하고자 한다. 좋은 피드백과 나쁜 피드백을 구분하는 것이 가장 중요한데. 나쁜 피드백은 다음과 같다. 개인적인 취향이 포함된다. 작업에 대한 피드백이 아니고 작업자에 대한 피드백을 준다. 문제해결이 아닌 해결책에 집중한다. 문제의 논쟁을 모호하고 흐리게 만드는 피드백을 준다. 개인적인 취향이 포함되면 개인의 의견이지 피드백이라고 보기는 어렵다. 피드백은 어떠한 목적에 부합되는지.. 2020. 1. 16. 알고리즘) 플러드 필 (Flood Fill) 플러드 필 (Flood Fill) 플러드 필이라는 알고리즘은 다차원 배열(2차원 이상)에서 화면을 격자(Grid)로 분할하거나 체우는과정에서 사용되는 알고리즘이다. 이번에 필자는 특정 맵을 포인트화하는 과정에서 해당 알고리즘을 사용했다. 타일맵으로 만드는 과정에서 굉장히 많이 사용한다. 구현방법은 다음과 같다. 특정 기준이되는 좌표를 정한다. 기준좌표의 방향(4방향 , 8방향)에 대한 확장형 로직을 작성한다. 해당 로직을 재귀처리한다. 재귀처리를 하는과정에서 해당 조건이 맞지 않으면 종료한다. (조건은 맵의 크기 or 갈수없는 영역 등등) 작업된 코드는 다음과 같다. private void GetGridPoint(int _x, int _z){ SceneInGame scene = SceneManager.I.. 2020. 1. 14. 게임개발) 레이싱 길 만들기 - 방법론 레이싱 길 만들기 - 방법론 길을 만드는 과정에는 여러가지 방법이 존재한다. 이번에 레이싱 길 처럼 곡선으로 이어진 길을 만들어야하는 상황이 생겼다. 레이싱 길을 만드는 과정은 다음과 같다. 1. 라인을 그린다. 2. 라인사이의 중점 지점을 일정한 간격으로 재생성한다. 3. 중심 라인의 양 방향(좌 , 우)의 폭(Width)만큼의 갭으로 2가지의 선을 만든다. 4. 두가지 선을 기준으로 정점 벡터를 생성한다. 5. 삼각형 폴리곤의 정점들을 연결한다. 레이싱 길은 이런형태로 만들어진다. 그냥 노가다 방법으로 만드는과정도 있긴하지만 대체적으로 게임은 특정기준으로 생성이되는 에디터 형태가 되어야한다. ★★★★☆ 2020. 1. 14. 게임개발) 피킹(Picking)기법 피킹(Picking)기법 개발에서 피킹(Picking)이라는 기법은 클릭된 곳의 객체들을 선택해주는 기능이다. 대부분의 툴에서 Viewing 된 영역에서 편의성을 위해서 쉽게 선택을 하는 방법이다. 2D 인 스크린좌표를 통해서 해당 오브젝트를 판별하기 때문에 여러가지 충돌 및 판별 로직이 들어간다. 대략적인 구현론은 다음과 같다. 2D 스크린 좌표를 월드 좌표로 변환 2D 스크린 좌표를 기준으로 Ray를 쏜다. Ray에 모든 충돌되는 오브젝트들을 판별한다. 오브젝트들중에서 가장 Depth가 적은 오브젝트를 반환 피킹의 기법에서 가장 중요한건은 좌표계의 일치화와 충돌에 대한 판단이다. ★☆☆☆☆ 2020. 1. 10. Unity) NevMesh 사용해서 길찾기 NevMesh 사용해서 길찾기 유니티에서는 NevMesh라는 길을 찾는 기능을 지원한다. 기본 원리는 다음과 같다. 특정 오브젝트들을 선택해서 'Bake' 이후에 만들어지는 NevMesh를 통해서 Agent들이 길을 찾는 것이다. Window - Ai - Navigation의 메뉴를 클릭한다. Navigation이라는 메뉴창이 나오는데 여기에서 Object 메뉴를 눌러서 hierarchy 상에서 맵으로 될 오브젝트를 선택한다. Navigation Area라는 항목에는 Walkable(이동 가능한) , Not Walkable(이동 불가능한), Jump(점프)라는 항목을 오브젝트마다 선택해준다. 이때 'Navigation Static이라는 건 움직이지 않는 정적인 오브젝트일 경우에 '체크'해준다. 오브젝트들.. 2020. 1. 10. 코드) Unity 마우스 위치로 유닛 이동 Unity 마우스 위치로 유닛 이동 간략한 설명은 다음과 같다 . Update 에서 Unity의 Input Touch 이벤트를 플랫폼에 따라 입력을 받는다. 입력한 상태에 따라서 이벤트에 대한 처리를 한다. 입력한 상태가 Click or Press 인 경우에 해당 유닛의 이동에 대한 처리를 한다 ( 마우스 위치 포지션기반) void Update() { if (RuleManager.Instance.GetRuleState() != eRULE_STATE.PLAY) { return; } Vector2 touchPosition = Vector3.zero; bool input = false; #if UNITY_EDITOR if (Input.GetMouseButton(0)) { touchPosition = Input.. 2020. 1. 8. Unity) Mac / Window 에서 VScode 스크립트 자동정렬 Mac / Window 에서 VScode 스크립트 자동정렬 Window : ctrl + k + f Mac : command + Shift + f ★☆☆☆☆ 2020. 1. 6. Tip) Cocos Creator 안드로이드 실시간 디버깅 방법 Cocos Creator 안드로이드 실시간 디버깅 방법 콘솔 커맨드창 cd C:\Users\drehzr\AppData\Local\Android\Sdk\platform-tools adb.exe forward tcp:5086 tcp:5086 앱실행 - Connected chrome-devtools://devtools/bundled/inspector.html?v8only=true&ws=127.0.0.1:5086/00010002-0003-4004-8005-000600070008 --------- ※주의사항 -디버그 모드만 됨. URL : https://medium.com/@nwigi/cocos-creator-how-to-debug-native-android-58a8ac899fea Cocos Creator — H.. 2019. 12. 27. 알고리즘) Flocking Algorithm (군중이동 알고리즘) Flocking Algorithm (군중 이동 알고리즘) 군중 이동에 대한 알고리즘으로 많이 쓰이고 대중적인 알고리즘이다.새 떼라던지 물고기들의 움직임 등 여러 집단이 함께 움직이는 모습을 구현한 알고리즘이다. FSM!= Flocking Alogrithm (상태 머신이 없다)Emergent Behavior (임기응변적인 행동)개별적인 정보로 행동!= 집단의 움직임특징은 다음과 같다. 예전부터 한 번쯤은 구현해보려고 했던 Flocking Alogrithm을 구현을 했다.처음부터 내가 구성해서 작업한 건 아니고 다른 코드를 많이 참고했다. Flock에서는 각 가중치에 의거해서 회피, 집합, 정렬에 대한 처리를 하게 되고 집합 그룹이 되면 움직임에 대해서 평균 처리를 하게 된다.수학적인 로직이 꽤나 많이.. 2019. 12. 26. Unity) 최적화 - 정적 게임 오브젝트(Static Object) 정적 게임 오브젝트(Static Object) 최적화를 위해서는 게임 플레이 중에 어떤 오브젝트가 움직일 수 있는지 여부를 알아야 할 때가 있습니다. 정적(즉, 움직이지 않는) 오브젝트에 대한 정보는 에디터 상에서 흔히 미리 계산될 수 있는데, 이것은 오브젝트 위치변화로 인한 데이터 무효화가 일어날 일이 없다는 것을 보장함으로써 가능한 것입니다. 예를 들면, 렌더링은 여러 정적 오브젝트들을 _배치_라고 불리우는 하나의 큰 오브젝트로 결합시킴으로써 최적화될 수 있습니다. 게임오브젝트의 인스펙터에는 맨 우측상단에 Static 체크박스와 메뉴가 있습니다. 이것은 유니티 여러 다른 시스템들에게 해당 오브젝트가 움직이지 않을 것이라고 알려주기 위해 사용됩니다. 해당 오브젝트는 각각의 시스템에 대해서 개별적으로 s.. 2019. 12. 20. Unity) 특정 값을 제외한 랜덤한 값 구하기 특정 값을 제외한 랜덤 한 값 구하기 개발을 진행하다보면 특정한 값을 제외한 랜덤 한 값을 구할 때가 있다. 그런 상황에서 썻던 코드이다. using System.Linq; public int GetRandomNotContain(int _min, int _max, int[] _notContainValue) { HashSet exclude = new HashSet(); for (int i = 0; i !exclude.Contains(i)); var rand = new System.Random.. 2019. 12. 16. 이전 1 ··· 51 52 53 54 55 56 57 ··· 59 다음 반응형