전체 글(51)
-
Unity - 싱글톤 패턴
주로 사용하는 싱글톤 패턴을 제너릭을 이용해서 구현해보는 시간을 가졌다. 매번 매니저오브젝트와 스크립트를 구현하면서 싱글톤을 사용했는데 사용할 때마다 스크립트에 싱글톤을 구현해주는 방식으로 했다. 그러다보니 여러 싱글톤 객체가 생기기 시작했을때 똑같은 코드가 반복되는 현상도 발생했다. 제너릭으로 구현하게되면 싱글톤을 만드는 것도 간단하고 코드가 반복되지 않는 장점이 있다. 목차제너릭 싱글톤 클래스 생성싱글톤 객체 생성싱글톤 패턴의 장점과 단점마무리 제너릭 싱글톤 클래스 먼저 제너릭에 대해서 알아야 하는데, 제너릭은 동일한 기능을 수행하지만 다른 데이터를 받아서 처리할 때 유용하다. 매번 다른 데이터값에 대한 처리를 하기위해서 여러 메서드나 클래스를 작성하는것은 매우 비효율적이기 때문에 제너릭 타입을..
2024.05.21 -
Unity - Vector2.Dot으로 시야각 구하기
잠입을 해야하는 게임같은 경우 적 AI들이 시야각을 가지고 있다. 그 시야각에 플레이어가 들어가게 된다면 적발이 되고 쫓겨나는 그런 로직이 구현되어있는 경우다. 그럼 이 시야각을 어떻게 구현 할 수 있을까? 이번 챌린지 과제 Rocket 발사 프로젝트에서 로켓이 날아가는 도중, 소행성(Asteroid) 레이어가 시야각에 들어오게 된다면 우주선이 깜빡이는 애니메이션을 통해 경고하는 로직을 구현했다. 목차Mathf.Cos Physics.2D.CircleCastAll()Vector2.Dot마무리 Mathf.CosMathf.Cos(float f) 메서드는 f에 값을 넣어주면 해당값을 Cos값으로 반환해준다 (-1,1)범위 우리가 알고 있는 Degree로 계산한다면 22.5º에 해당하는 코사인 값이 들어가 있을 ..
2024.05.17 -
Unity - 각도 구하기
Unity에서 회전과 관련된 연산을 할 때 두 점 사이의 각도를 알아야 할 순간이 있다. 두 점은 두 개의 벡터로 표현이 가능하고, 두 개의 벡터가 원점에서 출발한다고 생각했을 때 삼각함수를 이용하면 각도를 구할 수 있다. 탄젠트와 아크탄젠트탄젠트는 직각삼각형이 있을때 tanΘ = a/b 로 표현 할 수 있다. 이 말은 각도를 알면 밑변과 높이의 비율을 알 수 있다.tan 45º = 1 와 같이 각도가 45º라면 밑변과 높이의 비가 1:1이라는 얘기이다. 그러면 우리는 벡터의 밑변과 높이 (x,y)만 알게된다면 역으로 각도를 구할 수 있게 된다. 이를 아크탄젠트라고 하는데 유니티에서는 아크탄젠트를 지원해주는 함수 Atan2(float y, float x)가 존재한다.해당 함수는 라디안 (- π, π)..
2024.05.16 -
Unity - Quaternion
유니티에서 인스펙터창을보면 Transform을 볼 수 있다. (x,y,z) 세 개의 값으로 각도를 조절할 수 있는데 이를 오일러각(Euler Angle)이라고 부른다. 하지만 내부적으로는 쿼터니언 (x,y,z,w) 즉 4개의 값으로 사용하고있다. 오일러각을 사용했을때 발생하는 짐벌락(Gimbal Lock)현상을 쿼터니언을 이용하면 해결 할 수 있기 때문이다.https://www.youtube.com/watch?v=yxMQKsab5TQ&t=400s짐벌락 테스트 영상 위 영상처럼 축이 겹치게 되는 순간 한 축이 소실되는 현상이 짐벌락 현상이다. 쿼터니언은 축을 하나 더 추가해 4차원으로 한 축이 소실되는 현상을 해결 한 것이다.Quaternion 함수public staic Quaternion Euler(fl..
2024.05.10 -
Unity - LayerMask
LayerMask란 레이어 기반 작업을 단순화 하는 것이다. 32비트 정수로 표시되는 Bit Mask를 이용해 특정 레이어 대상 작업을 할 수 있다. 각 레이어는 0에서 31까지의 인덱스가 할당된다. 주로 비트플래그로, 비트로 각각의 아이템을 상징하거나, 레이어를 구분하는데 사용된다. LayerMask0000 0000 0000 0000 0000 0000 0000 0000 (32bit)로 표현된다.Monster Layer : 0000 0000 0000 0000 0000 0000 1000 0000 8번 레이어Level Layer : 0000 0000 0000 0000 0000 0000 0100 0000 7번 레이어와 같이 표현이 가능하다. 실제로 유니티 에디터에서 Layer를 세팅할 수 있다. 32bit이..
2024.05.09 -
C# - Queue
Stack을 했으면 빠질 수 없는 자료구조 Queue이다. Stack처럼 데이터를 일정한 방식으로 관리를 하는데 Queue는 선입선출 FIFO(First-in-First-out)구조이다. 먼저 들어온데이터가 제일 먼저 빠져나가는 방식이다. 흔히 게임을 할 때 대기실에서 매칭을 할 때 큐를 잡는다고 표현한다. 이때 큐가 선입선출의 구조를 가진 Queue를 뜻한다. 목차Queue의 작동방식Queue 사용법 Queue의 작동방식Queue는 Stack과 마찬가지로 제너릭 형태이다. Queue 클래스를 C#에서 지원하고있다. 선입선출(FIFO)를 기반으로 한 자료구조로 순서대로 처리해야할 경우에 유용한 자료구조이다. Enqueue를 통해 처리해야할 데이터를 집어넣고, Dequeue를 통해 이미 들어가있던 데이터..
2024.05.02