본문 바로가기

▶Programming/Unity

월드좌표 vs 상대좌표 월드좌표 vs 상대좌표 1. 오브젝트의 이동 1)transform.position=vector : 월드 좌표계에서의 위치값ex)transform.position= new vector3(1,1,1); 을 하게 되면 오브젝트는 1,1,1에 위치함.매 프레임마다 항상 위치는 1,1,1 그냥 월드좌표계를 절대 좌표로 생각하면 편할 듯. 이 험난한 유니티 세계에서 절대 바뀌지 않는 기준이 되는 좌표 로컬 좌표는 해당 게임오브젝트의 고유의 좌표를 지칭. 2)transform.translate((vector)) : 상대좌표로서 현재의 위치에 파라미터 값 만큼 이동void Update( ex) transform.translate(new vector3(1,1,1)); 을 ㅎ ㅏ게 되면 현재 오브젝트가 1,1,1에 있을 .. 더보기
Mathf 수학에 관한 함수..많으 쓰임. Mathf.Atan(float f): f에 대한 아크 탄젠트 값을 반환. 언제 쓰는지 모름. Mathf.Deg2Rad: 디그리(각도)를 라디안으로 바꿔주는 함수Mathf.Rad2Deg: 라디안을 디그리로 바꿔주는 함수 실제 라디안의 값을 float로 구하면 그리 크지 않다. 2파이가 360도니까..(1파이는 3.14616~~~~)이 값을 폭발적으로 증가시켜주는게 Mathf.Rad2Deg이다 적용방법은 라디안값 *(곱하기) Mathf.Rad2Deg 하면 된다. Mathf.Atan2(float y, float x) :Returns the angle in radians whose Tan is y/x. 두 float 값의 탄젠트 값..리턴은 앵글인데.. 앵글도 float형 Mat.. 더보기
Quaternion Position에 대입하려면 vector를 사용하듯 rotation에 대입하려면 Quaternion을 사용한다. 쉽게 String a=b(b가 String이어야 하는건 코딩 상식!) Position이나 Rotation도 마찬가지.Transform.position=new Vector()Transform.rotation=Quaternion a 그냥 변수 타입이라 생각하고 이해하면 꽤 명쾌! ransform.rotation에는 단순히 오브젝트의 회전"값"에 대한것이고 transform.Rotate가 +=의 개념이 들어 있어 update함수같은 곳에 넣어주면 회전하게 되는 것이다. 지금 오브젝트의 x,y,z의 회전값=transform.rotation 1줄 요약: 오브젝트를 원하는 x,y,z로 회전할거면 rota.. 더보기
DrawRay vs DrawLine DrawRay : Draws a line from start to start + dir in world coordinates.쉽게 얘기해서 출발지부터 목적지까지의 선을 그리는게 아니라!!!!! 출발지에서 출발지+목적지까지의 벡터값까지의 Ray를 그린단 얘기 DrawLine : Draws a line between specified start and end points.이녀석이야 말로 출발지부터 목적지까지의 선을 그려준다. 그림을 보면 두 녀석의 차이를 확실히 알 수 있다.붉은선: DrawLine 파랑선: DrawRay 원래 목적지의 벡터는 빨강선의 끝자락에 있다. 캐릭터를 이리저리 움직이다보면 Ray는 목적지를 가리키는게 아니라, 엉뚱한 방향을 가리킨다. 왜냐하면 Ray의 목적지는 출발지의 벡터+ 목적지.. 더보기
Unity Navigation 과 Nav Mesh Agent 메뉴에 Window -> Navigation을 선택하면 Inspector 옆에 Navigation이라고 생긴다. 아무튼 이게 중요한게 아니고...결국에 인터넷에서 자료 찾아보면 사용 방법은 너무나 많다. 여기서 정리하고자 하는 건..바로 Bake에 대해서... 1) Agent Radius: 아래 그림을 보면 쉽다. 두 그림을 봤을 때 바닥에 흰색부분이 왼쪽이 더 넓다. 처음 기본 값은 Agent Radius가 0.5인데 이걸 0.1로 줄이면 오른쪽과 같은 그림이 된다. (값이 작을수록 흰부분이 없어짐) 즉, 적 캐릭터가 얼마나 지형 지물에 밀착해서 움직일 수 있는 가를 정해주는 옵션같다. 2) Agent Height: 바닥(진짜바닥)과 네이게이션바닥(파랑색바닥)의 밀착정도 나타낸다고 한다..사실 잘 모르.. 더보기
Animator 상태를 저장하고 싶다...다시 말하면 정지상태, 이동상태, 공격상태 등..FSM처럼 만들어서 쓰고 싶을 경우..HashTable을 이용하듯 사용 할 수 있는 방법이 있다.Animator.StringToHash(레이어이름.상태이름(idle,jump 등)) 더보기
light Bias: 섀도우가 오브젝트에서 얼마나 멀리 떨어진 거리에서 시작되는지 표시하는 설정. 이 값이 지나치게 낮으면 아티팩트가 생성되고 값이 지나치게 높으면 오브젝트가 떠다니는 것처럼 보일 수 있다. Shadow Type: Hard Shadow/Soft Shadow Culling Mask: 라이트의 영향을 받는 레이어 목록. 더보기
**직렬화(Serializable) 위와 같이 script를 짜면 아래의 화면과 같이 지저분하게 유니티에 나온다. 보는 것과 같이 직렬화(Serializable)를 시키면 아래와 같이 깔끔한 모습을 인스펙터에서 볼 수 있다. ===========================================================================================================**중력(Gravity) 리지드바디 사용시 중력을 사용함에 체크 하면 간혹가다 배경 아래로 가라앉는 경우가 생긴다.이러한 이유는 콜라이더가 없어서이다. collider를 추가하자. 그러면 배경 아래로 가라앉지 않는다. ===========================================.. 더보기
유니티 유용한 함수들 Clamp: 오브젝트의 범위를 정해준다. 예를들어 슈팅게임을 만든다고 하면 맵을 벗어나지 않고 움직이게 해야한다. 그때 이 함수를 사용한다. Mathf.Clamp(GetComponent().position.x, xMin, xMax): position.x는 현재 위치 xMin은 최소, xMax는 최대 ===================================================================================================================**Quaternion : 회전을 위한 함수 라고 간단하게 생각하자. **Quaternion.LookRotation(벡터값) : 쉽게 얘기해서 target을 기준으로 회전한다. similar to the L.. 더보기
Collider Collider: 충돌..충돌..충돌.. 옆의 케이지(초록색 선)가 바로 Collider를 판별해주는 선이다. 한마디로 말해서 이 선에 닿으면 충돌했음을 감지하는 것. 가장 기본적인 Collider는 Box, Sphere, capsule collider가 있다. 이녀석들은 연산이 비교적 간단하다. 그래서 많이 사용. 옆에 보이는 collider가 Mesh Collider다. 위의 Collider 들과 비교했을 때 상당히 복잡해 보인다. 실제로도 연산이 매우 복잡하므로 실제로 사용할 땐 간단한 mesh를 사용하여 케이지의 수를 줄여서 사용해야한다. 옆에 보이는 Mesh와 아래 Mesh Collider에 보이는 Mesh의 내용이 처음에는 같다. 이 Mesh는 처음에 오브젝트를 만들 때 주어지는 것으로써, M.. 더보기