Unity/Unity 학습정리(19)
-
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 - 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 -
Unity - Coroutine2
저번 포스팅에 이어서 이번에는 코루틴의 특징과 원리에 대해서 공부해 보았다. 목차 코루틴의 특징 코루틴의 원리 WaitForSeconds() 마무리 코루틴의 특징 반드시 IEnuemrator를 반환해야 한다. MonoBehaviour를 상속받는 객체여야한다. 코루틴을 다루는 함수들은 모두 Monobehaviour 클래스안에 작성되어야 한다. 코루틴은 소유권의 개념이 있고, 소유권을 가진 객체가 비활성화되거나 파괴되면 해당 객체가 소유한 모든 코루틴은 중단된다. 코루틴은 메인 스레드에서 실행된다. 여기서 IEnuemartor를 반환해야하는데 코드를 보면 yield return 을 한다. 이것은 C#의 반복기이며 반환 형식은 IEnuemrator로 반환을 하는것입니다. 참고블로그 https://medium...
2024.04.22 -
Unity - Coroutine
게임을 만들다보면 원하는 동작을 시간 간격을 두고 반복 실행을 시키고 싶을 때가 있다. 물론 Update() 함수가 프레임마다 상태를 업데이트해주는 기능을 제공해주지만, 어느 순간에는 반복을 멈추고 싶을때가 있고 다수의 프레임에 분배를 못한다. 예를들어 몇초간격으로 생성되게 하는 오브젝트 혹은 몇초간격으로 데미지를 입는 흔히 도트데미지라고 부르는 동작 등 Update()함수에 작성을 하게 되면 프레임단위로 동작하기 때문에 구현하기 쉽지않다. 그래서 동작을 프레임에 분산시켜 내가 원하는 시간에 해당 함수를 동작시킬수있고 멈출 수도 있게 도움을 주는 것이 Coroutine이다. 목차 Coroutine을 사용하는법과 특징 yield return 마무리 Unity Documents - Coroutine 유니티 ..
2024.04.19 -
Unity Animation
게임을 하다보면 물론 게임성도 중요하지만, 비주얼도 매우 중요하다. 플레이어가 적을 죽일때 플레이어의 모션과 적의 맞을때의 모션과 죽을때의 모션 그리고 사운드 까지 적절하게 조합이된다면 게임이 매우 재밌어 질 것이다. 개인적으로 하고있는 프로젝트에서 플레이어의 움직임을 애니메이터를 이용해 관리하고 실제로 적용시키기위해 조금 공부를 해보았다. 목차 Animation 생성 Animation Controller Animation Script 마무리 Animation 이번 포스팅에서는 플레이어의 움직임 애니메이션을 위해 했던 과정들을 담을 예정이다. 기본적으로 Unity Animation은 Anim 파일로 Animation Controller을 통해 제어하고 동작한다. Animation 생성 Unity의 예전 ..
2024.04.18