정적 변수와 정적 함수
·
Game Development/Unity
1. Static -> 같은 클래스를 가진 모든 Object가 공유하는 하나의 변수. 즉 오브젝트 딴에서 관리하는 것이 아닌 클래스 부분에서 생성되어 정의되는 것. 해당 클래스를 가진 모든 오브젝트가 공유하는 특성이여서, 개별 오브젝트가 가지기에 어색한 기능에 사용한다. 2. static이 아닌 변수는 같은 클래스를 가진 오브젝트끼리 독립적이다. (메모리에 따로 할당됨) * static 변수는 오브젝트를 거치지 않고 바로 사용 가능 ex) 일반 변수였으면 object.var 이런 식으로 가져와야 하지만 정적 변수는 class.var 이런 식으로 클래스를 통해 바로 호출 가능 3. Static은 함수에도 사용 가능 -> 클래스 딴에서 관리한다는 것을 이용하면, 코드로 접근할 때 오브젝트를 거치지 않고 클래..
(C#)오버로드
·
Game Development/Unity
1. 오버로드 : 함수의 여러가지 버전을 만드는 것. 여러 형태의 인수에 대응가능한 함수를 만들 수 있다. 2. 선언 방법 : 함수의 이름을 똑같이 하되, 인수가 달라야 한다. public int Sum(int a, int b) { return a + b; } // 정수형 인수 세 개를 받기 위한 오버로드 함수 public int Sum(int a, int b, int c) { return a + b + c; } 2. 여러 인수뿐만 아니라 여러가지 자료형에 대응 가능하다. public int Sum(int a, int b) { return a + b; } // 다른 자료형을 받는 오버로드 함수 public float Sum(float a, float b) { return a + b; } public fl..
충돌 처리
·
Game Development/Unity
유니티에서 충돌은 오브젝트가 가지고 있는 Collider 컴포넌트를 통해 구현된다. 1. 함수 Collider를 트리거로 사용할 떄 - OnTriggerEnter(Collider other) 함수 : 트리거와의 충돌 감지 함수. 매개변수 other는 충돌한 물체를 가리킴. - OnTriggerStay(Collider other) : Trigger와 붙어있는 동안에 실행 - OnTriggerExit(Collider other) : Trigger와 붙어있다가 떨어질 때 실행 Collider를 트리거로 사용하지 않을 때 - OnCollisionEnter(Collision other) 함수 : 일반 Collider와 충돌했을 때 자동으로 실행. 매개변수 other는 충돌한 문체를 가리킴 - OnCollision..
인스턴스화
·
Game Development/Unity
인스턴스화 : 미리 만들어둔 오브젝트나 프리팹을 게임 도중에 필요한 만큼 실시간으로 찍어내는 것 ex) 총알, 몬스터 등 Instantiate(GameObject obj, Vector3 pos, Quaternion rot) obj 게임 오브젝트를 pos 위치에 rot 각도로 생성한다. public GameObject object; void Start() { Instantiate(object, transform.position, transform.rotation); } 이렇게 되면 해당 object에 해당하는 게임 오브젝트가 이 스크립트가 포함된 게임 오브젝트의 위치, 각도를 가지고 생성된다. 이때, 생성된 게임 오브젝트는 변수로도 할당이 가능하다 public GameObject object; void S..
회전과 쿼터니언
·
Game Development/Unity
유니티는 회전 처리를 하는데 쿼터니언(사원수)을 사용한다. 하지만 사원수는 어려운 개념이니 유니티를 사용하는 입장에서는 그렇구나... 하고 넘어가도록 하자. 관련 함수 및 기타 1. Quaternion.Euler(Vector3) : 이해가 쉬운 Vector3 값(진짜 벡터값이 아닌 형식)을 자동으로 Quaternion 값으로 변환해주는 함수. 반환값은 Quaternion. (x, y, z)와 같은 Vector3 형태를 인수로 입력한다. 형식은 벡터이지만 우리가 쓰는 각도를 의미한다. ex1) Quaternion rotation = Quaternion.Euler(10, 10, 10); ex2) Vector3 rot = new Vector3(10, 10, 10); Quaternion rotation = Qu..
평행이동과 좌표계 관련
·
Game Development/Unity
평행이동은 기본적으로 Local Space를 기준으로 이동 -> Space.Self, Space.World로 설정 Transform 컴포넌트의 위치와 각도는 Local Space & 부모를 기준으로 한다. (상대적임) * 속성(World Space, Local Space 순서) Position -> transform.position, transform.localPosition Rotation -> transform.rotation, transform.localRotation Scale -> transform.scale, transform.lossyScale
벡터
·
Game Development/Unity
유니티에서 벡터 => 물론 크기,방향을 나타내는 역할도 하지만 2개 이상의 원소를 표현하는 방식?으로도 사용 가능 ex) Vector2 (x,y) 2개 원소 , Vector3 (x,y,z) 3개 원소 , Vector4 (x,y,z,w) 4개 원소 ....... 등 현재 위치(점), 현재 위치로부터 상대적인 위치(화살표) 둘 다 응용 가능하다. * 목적지 -(빼기) 현재위치 => 두 점 간격(거리) 나의 위치 - 상대방 위치 = 간격 => 나의 벡터 - 상대방의 벡터 = 상대방에서 나로 연결되는 벡터, 도착점 - 시작점 = 시작점에서 도착점으로 가는 벡터 그냥 벡터 쓰면 대각선 길이에 루트2 곱해져서 값이 이상해질 수 있음 -> 단위벡터, 방향벡터, normalized 벡터(길이 1) 사용 * 방향벡터 :..
Time.deltaTime
·
Game Development/Unity
모든 컴퓨터들의 성능이 다르기 때문에 FPS도 다름. 그렇기 때문에 Update 함수는 한 프레임마다 실행되기 때문에 같은 시간이더라도 pc에 따라 실행되는 횟수가 다르다. 이때 이런 문제를 해결하기 위해 Time.deltaTime을 이용 Time.deltaTime은 한 프레임의 시간을 반환 ex) 60프레임 => 1/60초, 144프레임 => 1/144초 예를 들어 1초동안 1m를 움직이는 스크립트를 작성하려고 한다. 이때, FPS가 60과 144인 경우를 살펴보자 i) 60의 경우 만약 Time.deltaTime을 쓰지 않고, Update 함수에서 한 프레임 당 1m를 이동하게 시킨다면, 1초 동안 60m를 이동할 것 => 1m * 60 해결방법 1m를 1초 동안 깜박이는 횟수인 60으로 나눠주면 1..
snwdaaa
'Game Development' 카테고리의 글 목록