이영호님의 강의를 토대로 정리한 내용입니다. 1. 어플리케이션 생성 포톤사이트에 접속하여 아이디를 생성 후 로그인합니다. 로그인 후 우측 상단 아이콘을 누르면 나오는 관리화면 페이지에 들어갑니다. 새 어플리케이션 만들기 버튼을 클릭 후 적당한 이름, 설명을 기입 후 작성하기 버튼을 클릭합니다. 대시보드에 생선된 포톤 어플리케이션 정보입니다. 어플리케이션 ID는 Unity에 사용하므로 복사해놓습니다. 2. 유니티 세팅 에셋스토어에서 pun2를 검색후 다운로드, Import 합니다. Import가 완료되면 방금전 만들었던 어플리케이션 ID를 기입하라는 창이 나옵니다. AppId 기입후 Close 버튼을 누릅니다. 혹시나 Skip하였다면 Window -> Photon Unity Networking -> Hig..
Unity 공식 사이트에서의 TransformDirection 함수는 아래와 같이 설명되어 있습니다. 로컬공간에서 월드공간으로 /direction/을 변환합니다 즉 TransformDirection 함수는 해당 transform의 로컬공간에서의 벡터를 월드공간에서의 벡터로 바꿔주는 함수입니다. 예를들면 오브젝트를 정면으로 움직이게 하기 위해 transform.position = transform.position + transform.TransformDirection(Vector3.forward); 처럼 사용할 수 있습니다. 물론 transfomr.Translate(Vector3.forward); 처럼 편하게 구현할 수 있지만 Rigidbody, CharacterController와 같이 상대 좌표가 아닌..
출처 : https://stackoverflow.com/questions/18484577/how-to-get-a-random-number-from-a-range-excluding-some-values private int GetRandomNumber() { var exclude = new HashSet() { 5, 7, 17, 23 }; var range = Enumerable.Range(1, 100).Where(i => !exclude.Contains(i)); var rand = new System.Random(); int index = rand.Next(0, 100 - exclude.Count); return range.ElementAt(index); } 원하지 않는 숫자를 제외한 범위(코드에서는 1..
1. 탄젠트를 사용하여 각도 구하기 - 출처 위 두 공식을 사용하여 두 점 사이의 각도를 구할것입니다. 우선 기준이 될 시작점과 시작점으로부터의 각도를 구할 끝점을 구하기 위해 시작점 벡터에서 끝점 벡터를 빼줍니다. 그러면 시작점에서 부터 끝점으로 향하는 벡터가 구해지는데 이 백터의 x,y를 atan에 넣으면 두 점 사이의 각도를 구할 수 있습니다. 12345 float GetAngle(Vector2 start, Vector2 end) { Vector2 v2 = end - start; return Mathf.Atan2(v2.y, v2.x) * Mathf.Rad2Deg; }Colored by Color Scriptercs 2. Angle Unity에 두 점 사이의 각도를 구할수 있는 Vector2.Angl..
1. Firebase 페이지에 접속합니다. https://console.firebase.google.com/ 2. 프로젝트 추가 임의의 프로젝트 이름을 넣고 위치를 대한민국으로 변경한 후 프로젝트 만들기 버튼을 눌러 프로젝트를 생성합니다. 프로젝트 ID는 데이터베이스에 접근할 URL에 사용됩니다. 3. 앱 추가 안드로이드 아이콘을 클릭하여 앱 추가 페이지로 들어갑니다. 이 페이지에서 입력하는 패키지 이름은 유니티 패키지 이름과 동일해야 합니다. google-services.json 파일을 다운로드 합니다. 이 파일은 Unity Assets 폴더에 들어가게 됩니다.https://firebase.google.com/docs/unity/setup?authuser=0#add-the-sdk-android 이곳에서..
출처 : https://www.youtube.com/watch?v=cSwB2brGVPY - 오지현 Evangelist 요약 Transform 변경은 유니티 엔진을 구성하는 C++ 레이어에 메세지를 보낸다 이는 성능에 악영향을 끼친다. 최적화 방법으로는 1. SetPositionAndRotation을 사용하자2. Optimize Game Objects 옵션을 활성화 시켜주자 본문 Transform은 모든 게임 오브젝트에 존재합니다. 이 Transform이 변경이 되면 c++로 이루어진 유니티 엔진 내부에 'OnTransformChanged' 라는 메세지를 보냅니다. 대부분의 경우 게임 오브젝트는 부모 자식 관계를 갖는 계층 구조를 갖게됩니다. 부모의 Transform이 변경이될 경우 자식의 모든 Trans..
출처 : https://www.youtube.com/watch?v=qwQ16sS8FSs 1. 옵저버 패턴 옵저버 패턴은 특정 객체(Subject)의 상태 변화에 따라 특정 객체와 연결된 다른 객체들(Observer)이 영향을 받는 1 : N 관계이다. 옵저버 패턴은 Observer, Subject 두 종류로 나뉘는데 Observer는 Subject의 상태 변화를 관찰하는 객체이며 Subject는 Observer에게 상태 변화를 알리는 객체이다.옵저버 패턴을 사용하는 이유로는 결합도를 낮추고 응집도를 높여 객체지향적인 프로그래밍을 하기 위해서이다. 특정 객체(Subject)의 상태 변화에 따라 영향을 받는 다른 객체들(Observer)이 무수히 많다면 특정 객체에는 다른 객체들의 정보가 무수히 필요하게되며..
싱글톤 패턴은 하나의 인스턴스에 전역적인 접근을 시키며 보통 호출될 때 인스턴스화 되므로 사용하지 않는다면 생성되지도 않습니다.유니티에서 싱글톤 패턴은 매니저 클래스와 같이 여러 클래스에서 같은 인스턴스에 접근이 가능해야 하는 경우에 사용됩니다.어디서나 접근할 수 있다는 매우 편리한 장점이 있지만 이 장점 덕분에 결합도가 높아지는 결과가 생길 수 있으므로 주의하면서 사용해야 됩니다.유니티에서의 싱글톤 패턴의 구현은 매우 다향한 방법이 있어 자신에게 맞는 방법을 택하면 좋을 것 같습니다. 아래에 몇 가지 구현 방법을 적어놓았습니다. 1. Awake 에서 초기화 하는 방법 12345678910111213141516using UnityEngine; public class SingletonAwake : Mono..