전체 글 105

Enemy Die Effect (Particle System)

📜 Infomation Step1 파티클 시스템을 추가해준 후 Rotation X 축을 0으로 수정해 x 축을 향해 파티클이 날아가도록 수정 Step2 Renderer 탭에 가서 Mode를 Mesh형태로 만들고 Meshes 형태를 Cube로 만들어 로우폴리 Enemy가 터질 때 어올리게 만든다 + 에너미가 가지고 있는 Material을 넣어 톤앤매너를 맞춤 Step3 Collision 탭에 가서 Type을 World로 변경 후 Dampen을 0에서 0.7로 늘려줘 다른 3D 오브젝트와 부딪히도록 만들어준다. Step4 Shape 탭에 가서 앵글값과 래디우스 값을 줄여 이펙트가 발사되는 범위를 좁혀준다. Step5 Emission 탭에 가서 Bursts의 +버튼을 눌러 지정된 시점에 파티클을 방출하게 해줌..

Random.insideUnitSphere

📜 information Random.insideUnitSphere 은 반경 1을 갖는 구 안의 임의의 지점을 반환한다. 자료형은 Vector3로 구의 크기 조절은 숫자를 곱해서 사용하면 된다. ex) transform.position = Random.insideUnitSphere * value; 📖 참고 문서 Random.Range 만 있는게 아니다! UnityEngine.Random에 대해 알아보자. Random.Range 만 있는게 아니다! UnityEngine.Random에 대해 알아보자. Intro Unity에서 Random.Range()는 꽤나 자주 사용하는 친구입니다. 하지만 Random은 단순히 톡 누르면 난수를 내뱉는 난수 자판기의 역할만 있는게 아닙니다. 하지만 엄청나게 많거나 유용한 ..

Unity 2024.03.17

Rigidbody.AddTorque

📜 information Torque 뜻 : 1. 회전축(回轉軸) 둘레의 힘의 모멘트. 회전축에서 힘의 작용점까지의 거리와 회전축과 작용점을 잇는 직선에 수직인 힘의 성분과의 곱을 이름. 리지드바디(강체)를 이용해 오브젝트를 회전시킬 수 있다. AddTorque 역시 물리 시뮬레이션의 일부이기 때문에 회전이 바로 멈추지 않고, 관성에 의해 오브젝트가 계속 돌아간다. 📖 참고 문서 Rigidbody / AddForce / AddTorque Rigidbody / AddForce / AddTorque Rigidbody / AddForce / AddTorque Rigidbody - Rigidbody(강체)는 gameObject가 유니티 물리 엔진에 제어 받게 한다. 한마디로 힘과 질량을 갖고 움직일 수 있도록 ..

Unity 2024.03.17

[Attribute]ContextMenu

📜 information 인스펙터 창에서 함수를 호출할 수 있게 하는 기능이다. 📖 참고 문서 [Unity] Component의 컨텍스트 메뉴(ContextMenu) 만들기 [Unity] Component의 컨텍스트 메뉴(ContextMenu) 만들기 유니티에서 컨텍스트 메뉴(ContextMenu) 는, 컴포넌트 이름 우측에 세로로 돌아간 ... 아이콘을 클릭했을 때 등장하는 메뉴입니다. Context Menu 를 직역하면 "맥락 메뉴" 정도인데, 인스펙터에 보여지는 tistory.wonsorang.com

Unity 2024.03.17

Mathf.PingPong

📜 information핑퐁처럼 A값이 최댓값 B에 도달하면 그 뒤부터는 마이너스 처리되고, 0이 되면 다시 최댓값까지 특정지점을 반복해서 왔다 갔다 하는 경우 사용하면 좋다.다만 A는 지속적으로 증가하여 B까지 도달해야 마이너스 전환된다.이때, 결괏값은 최댓값보다 작은 값까지만 반환된다.(최댓값이 3이라면, 2.9999까지 가능)class PingPong{ void Update() { // x축으로 2.9999 만큼 이동하면 다시 0.0001까지 재이동되고 다시 2.9999까지 이동 반복한다. transform.position = new Vector3(Mathf.PingPong(Time.time, 3), transfrom.position.y, transfrom.po..

Unity 2024.03.17

[키워드] operator

📜 information Operator(연산자)는 오버로딩(재정의) 하여 기능을 수정할 수 있다. public struct Coord { public int x; public int y; public Coord(int _x, int _y) { x = _x; y = _y; } public static bool operator ==(Coord c1, Coord c2) { return c1.x == c2.x && c1.y == c2.y; } public static bool operator !=(Coord c1, Coord c2) { return !(c1 == c2); } } 📖 참고 문서 C#/.NET 연산자 오버로딩(operator) C#/.NET 연산자 오버로딩(operator) C++과 마찬가지로 C..

Unity 2024.03.17

[길찾기 알고리즘] Flood Fill

📜 information 플러드 필(Flood Fill) 이란? 다차원 배열의 어떤 칸과 연결된 영역을 찾는 알고리즘이다. 해당 알고리즘은 그림판의 채우기 기능과 지뢰 찾기 프로그램에서도 사용된다. 주변에 같은 성질을 가지는 셀을 모두 찾아준다는 공통점이 있음. DFS(재귀) or BFS(Queue)를 지용하여 구현한다 📖 참고 문서 [알고리즘] Flood Fill ( Seed Fill ) [알고리즘] Flood Fill ( Seed Fill ) Flood Fill 알고리즘에 대한 정의를 찾아보면 보통 아래와 같이 나온다. 주어진 시작점으로부터 연결된 영역들을 찾는 알고리즘 다차원 배열의 어떤 칸과 연결된 영역을 찾는 알고리즘 주변에서 joomn11.tistory.com [10분 테코톡] 📚카프카의 탐색..

Unity 2024.03.17

[셔플 알고리즘] The Fisher-Yates

📜 information System.Random prng = new System.Random(seed); // -1 하는 이유는 'the fisher-Yates' 알고리즘에 마지막 인덱스는 생략해도 되기 때문 for (int i = 0; i < array.Length - 1; i++) { int randomIndex = prng.Next(i, array.Length); T tempItem = array[randomIndex]; array[randomIndex] = array[i]; array[i] = tempItem; } return array; 배열을 한 바퀴 돌면서 랜덤으로 뽑힌 값을 자신의 인덱스와 교환한다. 배열의 마지막 인덱스는 구조상 같은 값으로 유지되기 때문에 생략해도 된다. 랜덤 값은 0..

Unity 2024.03.16

Destroy vs DestroyImmediate

📜 information Destroy GameObject, Component, Asset을 제거한다. Update 루프가 끝난 직후 이거나, 시간이 지정된 경우 호출 후 n초가 지난 뒤 바로 파괴한다. MonoBehaviour 스크립트를 파괴하면 OnDisable과 OnDestroy가 스크립트 제거 전에 호출된다. DestroyImmediate 즉시 객체를 파괴한다. 대신 Destroy를 사용할 것을 강력히 권장한다. 에디터 모드에서는 지연 파괴가 호출되지 않기 때문에 이 함수는 에디터 코드를 작성할 때만 사용해야 한다. 둘의 차이는 첫 번째로 파괴의 시점이다. Destroy는 당장 파괴가 되지 않는다. 다시 말해 Destroy가 불린 Update 프레임 내에서 파괴한 객체를 다시 불러도 해당 객체는 ..

Unity 2024.03.16

Physics.OverlapSphere

📜 information Physics.OverlapSphere 중점과 반지름으로 가상의 원을 만들어 추출하려는 반경 이내에 들어와 있는 콜라이더들을 반환하는 함수 반환 값은 Collider 컴포넌트 배열로 넘어온다. Collider[] initialCollisions = Physics.OverlapSphere(transform.position, 1f, collisionMask); // 총알이 생성되었을 때 어떤 충돌체 오브젝트와 이미 겹친 상태일 때 if(initialCollisions.Length > 0) { OnHitObject(initialCollisions[0]); } 📖 참고 문서 [Unity 3D] Physics.OverlapSphere (주변 콜라이더 추출하기) [Unity 3D] Phys..

Unity 2024.03.16