목록Unity 학습일지 (18)
시작은 0부터
Physics.OverlapSphere(Vector3 position, float radius, int layerMask) : position을 기준으로 radius 만큼의 원형 반경으로 주변을 검사하여 layerMask에 해당하는 layer를 가진 콜라이더를 감지하여 bool 값으로 반환한다. AI의 행동 반경을 설정할 때 유용하게 쓰인다. Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance, int layerMask) : origin을 시작점으로 direction 방향으로 maxDistance만큼 레이를 쏴서 layerMask를 제외한 콜라이더의 정보(hitInfo)를 bool값으로 반환..
UI의 최적화는 한번에 많이 그려내는 것이 가장 최선의 방법이다. 메테리얼을 한번만 바꾸고 한번에 최대한 많이 그려내는 것. 이를 유니티 내부에서 구현한 기능으로 '아틀라스'가 있다. 2048 크기 이미지 3개를 한번에 출력하기 위해 4096 크기의 이미지를 출력하는 것 Blend Tree : Blend Type 2D Simple Directional : 방향마다 애니메이션 '하나'만 표현한다. 2D Freedom Directional : 방향마다 애니메이션 여러개를 표현한다. 블랜드트리는 값에 따라 애니메이션을 섞는다. 위 경우는 float xAxis 값과 zAxis값을 그대로 반환하여 애니메이션 변수로 사용하여 블랜드트리를 설정하였다.
레이싱 게임을 만들어보면서 차량의 움직임을 구현할 때 지금까지 알고 있던 transform.Translate, RigidBody.AddForce, RigidBody.velocity 가운데 AddForce가 가장 차량 움직임에 근접한 이동방식이라고 판단하여 사용했는데, 차량을 회전해도 바라보는 방향과 상관없이 절대좌표를 기준으로 Z축으로 전진하는 문제가 있었다. AddRelativeForce : AddForce(절대좌표)의 상대좌표버전. 오브젝트의 회전값을 기준으로 작동한다. 이동 구현에 난항을 겪고 있는데, 우선 맵에는 경사(오르막, 내리막길)도 있고 약간의 턱(방지턱)도 있는 구조다. 이런 환경에서 Character Controller 를 사용하면 경사나 턱은 알아서 넘어가도록 구현이 되지만 문제는 리..
Raycast : 보이지 않는 광선을 쏘고, 그 광선이 다른 콜라이더와 충돌하는지 검사하는 원리. 충돌 검사를 하는 광선을 Ray라고 한다. Raycast 메서드는 다양한 형태로 입력받을 수 있다. Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance); Vector3 origin : 레이의 시작점 Vector3 direction : 레이의 방향 RaycastHit hitInfo : 레이가 충돌한 경우 hitInfo에 자세한 충돌 정보가 채워진다 float maxDistance : 레이의 충돌을 검사할 최대 거리 out 키워드로 입력된 변수는 함수 내부에서 변경된 사항이 반영된 채 되돌아온다.
Lightmap : 오브젝트가 빛을 받았을 때 보이는 텍스쳐를 미리 그려둔 것. 큐브에 광원효과를 내는 빛이 있다면, 실제로 그 빛이 광원효과를 내는 것이 아니라 라이트맵이 광원효과를 낸 것처럼 텍스쳐를 덧씌우는 것. Environment Lighting : 씬에 가장 기본으로 깔리는 빛. 모든 게임 오브젝트에 적용되며, 모든 방향에서 같은 세기로 들어오기 때문에 그림자나 명암을 만들지 않음. 게임 전체 색을 조정. Animator Layer : 애니메이터 컨트롤러에서 레이어를 나누어 한 오브젝트의 애니메이션 상태가 동시에 2개 이상 중첩되게 할 수 있는 시스템. 예를 들어 하나의 오브젝트 안에 애니메이터 레이어가 상체, 하체 2개가 있다면 걷기 + 공격 동작을 할 때 하체는 걷기 동작을 하면서 동시에 ..
Matrix4x4행렬의 구조는 다음과 같다. 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 위 3줄은 회전도를 나타낸다. 맨 아래줄은 위치를 나타낸다. 위 행렬에 자신의 좌표(x,y,z)를 곱해주면 로컬좌표가 된다. transform.lossyscale : 글로벌값을 기준으로 한 scale 값. 절대크기. transform.localscale : 부모의 값을 기준으로 한 scale 값. 상대크기. TRS Transform, Rotation, Scale 을 나타낸다.
Prefab Veriant : 프리팹을 상속받는 프리팹 생성. A라는 프리팹의 베리언트 B를 생성하면 B라는 프리팹(베리언트)가 생성되고, 이 프리팹은 부모 격인 A 프리팹이 바뀌면 같이 바뀌지만, B자식 격인 자신(B) 프리팹을 바꿔도 A의 프리팹은 바뀌지 않는다. 이 원리를 이용해 A라는 프리팹의 베리언트를 여러개 생성하면 각각의 베리언트들은 독립적으로 수정되고 서로 영향을 미치지 않지만 부모인 A 프리팹을 수정하면 모두 영향을 받게 된다. Animator Override Controller : 기존의 애니메이터 컨트롤러를 덮어쓰는 컨트롤러. Controller 안에 기존의 애니메이터 컨트롤러를 넣으면, 해당 컨트롤러 내부에 설정되어있는 애니메이션들이 Original 칸에 나온다. Override 칸..
Animation Event : 유니티 애니메이션 프레임에 함수를 호출할 수 있는 기능이다. 특정 애니메이션에만 어떠한 이벤트를 처리하고 싶을 때 사용할 수 있다. 메탈슬러그 모작 만들기를 시도하고 있는데, 구글링으로 구한 리소스파일이 간격이 일정하지 않아 스프라이트가 프레임마다 위치를 다르게 조정해야 위치가 맞는 문제가 생겼다. 처음부터 간격이 맞는 리소스를 구하는게 제일 완벽하겠지만 구하지 못해서 안맞는 리소스 파일을 수정해서 간격을 맞추려고 포토샵으로 노가다를 했지만 시간투자대비 진전이 너무 없는 것 같아서 차라리 포토샵 노가다가 아닌 유니티 노가다로 위치값을 조정해보았다. 프레임마다 위치값이 안맞아서 캐릭터가 사방팔방 튀어서 각 프레임마다 애니메이션 이벤트로 올바른 위치값으로 이동시켜주는 함수를 ..