}
World는 이제 세계 본질의 값이다 인스펙터창 보면 x,y,z값이 있는데 그게 World값이다 Local은 내가 오브젝트 클릭했을 때 그 오브젝트가!!!!!!!!!!! 기준이 되고!!!! 세상아 나를 억까하지마셈!! 나는 내가 기준이 되겠어!!! 너따위는 기준이 되지 못해!! 이러는 거임 즉, Local과 World는 기준이 누구냐에 따름 더 쉽게 설명해보면 지금 이 친구는 로테이션이 0,0,0 포지션도 0,0,0 이기 때문에 월드좌표계와 Local좌표계가 일치함 근데 이 친구가 삐져서 등을 휙 돌리면(로테이션을 180도 하면) 이 친구의 Local좌표계는 이렇게 변함 즉, 이 친구가 기준이 되므로 Forward방향이 저 빨간 기둥이 아닌 캐릭터가 바라보는 방향이 Forward방향이 됨!!
카메라 X축 회전카메라 X축을 회전시킬 mouseSpeed와 값을 저장할 변수 mouseX를 선언합니다. mouseX += Input.GetAxis는 Mouse X의 회전축을 받아와 더합니다. (왼쪽으로가면 마이너스, 오른쪽으로가면 플러스입니다. 카메라 Y축 회전움짤을 보면 캐릭터의 rotation Y만 바뀌는걸 볼 수 있다..! 요약1. float mouseX += Input.GetAxis("Mouse X"); float mouseY += Input.GetAxis("Mouse Y"); 2. transform.eulerAngles = new Vector(-mouseY, mouseX, 0); mouseY에 마이너스를 하냐면 값이 작아질수록 위를향하고 커질수록 아래를 향하기 때문입니다.
먼저, 우리 게임의 주 기능은 컨트롤러를 누르면 사슬이 뻗어 나가 사념에 연결되는 것이다. 나는 내 방식대로 이 사슬이 뻗어나가는 것을 구현해보려고 한다.이론1. 사슬이 뻗어나가는 위치와 타켓의 위치를 계산한다(Distance)2. 사슬이 생길 개수를 미리 정한다(이렇게 한 이유는, 사슬의 크기를 고정할 경우 distance의 거리에 따라 사슬의 개수가 부족하거나 초과될 수 있기 때문에 사슬의 개수를 미리 정해서 사슬의 크기를 유동적으로 바꿀 예정이다), 사슬의 크기를 고정시키는 방법도 해볼 예정이다 코드는 이러하다 distance를 구하고, 방향을 구한다음, 오브젝트의 길이를 구하면 된다.이렇게하면 문제점이 하나 발생한다. 이렇게 사슬이 중심정에 서로 겹친다.사이즈를 조정해주자. 위 아래로 겹치기 ..
AddComponent는 GetComponent와 다른 녀석이다 Add, 말 그대로 더한다는 뜻인데 첫 번째줄에서 Test라는 게임오브젝트를 새로 만들고 그 Test오브젝트에 라는 스크립트를 집어 넣어주는 것이다
1. Rotation 먼저, transform.LookAt과 Quaternion.LookRotation의 차이점이 궁금했는데 직접 해보니 같은 결과가 나온다. 먼저 LookRotation같은 경우, 지정된 forward와 upwards 방향에 의해 rotation이 결정된다. LookAt은 target의 현재 위치의 vector point을 향해 회전한다. 음, 두개의 문법을 살펴보니 차이점이 존재한다. 일단 LookAt같은 경우 타켓팅 되어야할 대상이 존재해야 한다는 것이다. 예를 들어, 유도 미사일 같은데에 사용하면 좋을 듯 싶다, LookRotation은 타켓 없이 회전될 때 사용되어야할 것 같다. 예를 들어, 캐릭터의 회전 같은 곳에 사용하면 될 듯 하다. Z축을 기준으로 한다. Z축을 중심으로 ..
오브젝트에는 Renderer라는 컴포넌트가 존재한다 그 아래에는 Mateirlas 요소가 있다 메테리얼은 쉐이더 작성할 때 이용한 것들을 사용해 요리조리 주무를 수 있다 예를 들어 코드에서 Thickness를 수정하고 싶으면 레퍼런스를 불러 SetFloat의 값을 수정해주면 된다 이때 material과 sharedmateiral의 차이가 있는데 mateiral은 오브젝트의 sharedmaterial의 사본을 복제해 material에 할당하는 거다 즉 원본 파일이 아니란 뜻임 모든 오브젝트의 메테리얼을 동시에 바꾸고 싶으면 sharedMateiral을 쓰면 되고 단독으로 바꾸고 싶으면 mateiral을 사용하면 되는 것이다 이때 material을 사용하면 Batch Rendering을 사용할 수 없는 것이..
나는 주로 캐릭터 움직임에 사용하곤 했다 이렇게 대각선으로 이동하면 피타고라파덕의 스킬로 인해 루트2가되어 약 1.41만큼 앞서 나가기 때문에 정규화(Normalized)를 통해 대각선으로 갈때도 1로 맞추어 주었다. 이걸 또다른 방식으로 이용할 수 있는데!!! 바로 Direction을 얻고자 할 때 유용하고 사용된다. 이렇게 A에서 B로 갈 때 방향을 구하려면 다들 벡터는 아시죠? B - A = (화살표오른쪽가리키는거)AB 이렇게 되는거 그러면 방향은 구했는데 이렇게하면 AB선분의 길이까지 가져오게 되죠. 그래서 정규화를 통해 값을 딱 1만 가져오면 되죠! Vector dir = (B-A).normalized()를 통해 방향을 가져와요 다같이~
내가 자주 사용하는 PingPong함수이다. t값이 length값이 되면 t값이 다시 -되어서 0이된다 최댓값이 Length가 되는 것이고, 최솟값은 0이다. Movement에만 사용되는 것은 아니고 Alpha값 조정할 때 자주 사용했다, 깜빡깜빡 거리도록 하는거
Rigidbody rb; if (gameObject.TryGetComponent(out rb)) { // Rigidbody 컴포넌트가 존재하므로 이제 'rb'를 사용하여 접근할 수 있습니다 } else { // 이 GameObject에는 Rigidbody 컴포넌트가 없습니다 } TryGetComponent는 GameObject에 존재하는 경우 지정된 유형의 컴포넌트를 검색하려고 시도합니다. 컴포넌트가 발견되면 true를 반환하고 그 컴포넌트에 대한 참조를 제공합니다. 발견되지 않으면 false를 반환합니다. GetComponent와의 차이 Rigidbody rb = gameObject.GetComponent(); if (rb != null) { // Use rb } 지정된 구성 요소 유형이 발견되지 않으..
유니티 Rigidbody에는 AddForce라는 함수가 있습니다. 이 함수는 Rigidbody에 힘을 더해주는 함수인데 여기에는 더해줄 힘(여기에는 방향도 포함되어있다)과 힘을 어떻게 줄지 종류를 정하는 2개의 인자를 받습는다. ForceMode 종류를 살펴보겠습니다. 1. Aceeleration - 질량(X) - 연속적인 힘(continuous) 2. Force - 질량(O) - 연속적인 힘(continuous) 3. VelocityChange - 질량(X) - 즉각적인 힘(instatnt) 4. Impulse - 질량(O) - 즉각적인 힘(instatnt)
유니티에는 총 4가지 형태의 빛(Light)이 있습니다. 1. Spot 2. Directional 3. Point 4. Area Spot Spot의 경우 가로등 같은 형태의 오브젝트에서 타원형의 빛을 발광하기 위해 사용됩니다. 스포트라이트 생각하면 됩니다. Directional Directional같은 경우 태양광이라고 생각하면 됩니다. Directional의 가장 중요한 값은 방향입니다. Point Point의 경우 횃불이나 전구같은 오브젝트에서 사용됩니다. 오브젝트를 중심으로 발광이 필요할 때 사용됩니다., Area Area의 경우 직접 해봐야 알 것 같아서 직접 구현해보았습니다. 먼저 윈도우 -> 렌더링 -> 라이팅을 누르면 됩니다. 가장 먼저 Auto Generate를 해제하고 2번 동그라미가 가..
AddExplosionForce이란 무엇이냐? 폭발이 일어났을 때 주변 오브젝트들을 날려버리는 상호작용이 필요할 때가 있지 않느냐? 그럴때 사용되곤 하는 기능이다. 스크립트의 원형이다 Rigidbody.AddExplosionForce(폭발파워, 폭발범위, 반경, 날려버릴 방향 등)
Occlusion Culling이란? Occlusion Culling은 컬링 기법중 하나이며, 드로우콜을 줄이기 위해 눈에 보이지 않는 오브젝트들을 렌더링 하지 않는 것을 뜻합니다! 위 사진처럼 플레이어의 시야각에 벗어나 렌더링이 필요로 하지 않는 오브젝트들을 추리는 것을 컬링이라고 합니다. 즉, 시야 밖 2개의 나무를 없애버리는 것을 Occulsion Culling이라고 합니다. 사용 방법 움직이지 않는 정적 오브젝트에 Static설정을 해주면 됩니다. 이렇게 뜨는데 여기서 Occuluder Static과 Occludee Static을 클릭하면 됩니다. Occuluder Static이란 가리는 대상이 되고, Occludee Static이란 가려지는 대상을 뜻합니다. [Window] -> [Renderi..
정적배칭을 사용하는 최적화 방법정적이란 말 그대로 움직이지 않는 것을 뜻하며, 움직이지 않는 정적 오브젝트에 활용하는 기법이다. 동일한 재질을 공유하는 오브젝트들을 일괄 처리해서 드로우 콜을 줄이는 방법이다. 여기서 드로우콜(Draw Call)이란 CPU가 CPU에게 렌더링을 부탁하는 것이다. 솔직히 이렇게 말하면 이해하기 어렵다. 인정하죠? 그래서 저의 얄팍한 그림실력으로 설명해보겠습니다.위 사진을 보면 각각 오브젝트마다 렌더링을 하게 돼서 하나의 구 오브젝트에 하나의 드로우콜이 일어나게 돼서 총 2번의 드로우 콜이 발생하는 반면,아래 사진을 보면 두 오브젝트가 한꺼번에 렌더링을 하게 돼서 한 번의 드로우 콜이 발생하게 된다 다이내믹 배칭정적 배칭과 반대는 다이내믹 배칭이다움직이는 오브젝트에 사용되는 ..