목록분류 전체보기 (253)
bdfgdfg
Raycasting 물리적인 광선을 쏘아내 충돌을 할 수 있게한다. Physics라는 물리클래스안에 Raycast가 존재하고. 이것은 레이캐스트를 어느 시작점이 주어지면 그 시작점을 기준으로 내가 원하는 값을 넣어 그 방향을 향해 레이를 쏠 수 있다. 매우 많은 인자를 받을 수 있지만, 그 중 매우 간단한 인자버전. 위에서 말한 시작점과 방향값을 넣어줄 수 있다. 그리고. 이렇게 레이를 쏠 때, 어느 물체와 충돌했는지 안했는지를 판별할 수 있게 bool값을 리턴한다. 물론 레이를 맞은 대상의 정보를 가져올 수도 있다. 참고로 out은 c#에서 내가 넘긴 인자에 결과값을 저장한다는 의미. 저 RaycastHit에 인자를 넘겨주기 위해. RaycastHit 변수를 만들고 넘겨준다. void Update() ..
Input Manager 키보드, 마우스 입력처리등을 모든 cs파일 Update문안에 넣는것은 비효율적. 그렇기에 InputManger라는 클래스를 만들어. 입력과 관련된 로직을 처리해주는 클래스를 만들어준다. using System; // Action을 사용하기 위해 추가. using System.Collections; using System.Collections.Generic; using UnityEngine; public class InputManager { // Action은 Delegate. 단 반환형이 void에 매개변수가 없는 애들을 함수로 등록가능. public Action KeyAction = null; public void OnUpdate() { if (Input.anyKey == fa..
크루스칼과 같은 최소 스패닝 트리를 구하는 알고리즘. 크루스칼 알고리즘은 탐욕(greedy)적인 방법으로 작은 가중치의 간선만을 선택해서 사이클이 발생하지 않는다는 가정하에 간선을 붙여줬다. 프림 알고리즘의 특징은 하나의 시작점(어느 정점이든 상관x)으로 구성된 트리에 간선을 하나씩 수집하며 진행한다. 네모가 쳐진 정점을 기준으로 15와 35라는 간선을 선택할 수 있는데. 당연히 15가 더 적은 가중치를 가진 간선이니 15를 선택한다. 이제 그 다음 정점을 확인해보면 5,10이라는 가중치를 가진 간선들. 더 작은 5 간선을 선택하고. 10이라는 간선을 확인했을때. 시작정점을 기준으로 15 + 10 = 25이니. 35보다 작다는것을 알 수 있음. 그러므로 35는 선택이 불필요. 이런식으로 나머지 간선도 선..
Union-find : 합치기-찾기. 이 알고리즘은 예로들어 어떤 배열에서. 어떤 인덱스에 접근해보았더니 그 원소가 가진 값이 이 인덱스의 부모. 즉 나와 연결고리를 찾는 과정. -> 최고 부모가 누구인지(Find). 혹은 내가 원한다면 다른 원소와의 연결고리를 합치는(Union) 알고리즘. 이 구조를 단순히 배열만을 이용한다면 찾는과정은 바로 찾을 수 있겠지만, 합치기 과정에서 모든 배열을 순회하면서. 합쳐야할 원소를 찾아야 한다. 그렇기에 트리 구조를 통한 Union-Find의 표현을 본다. 트리 구조를 통한 Union-Find의 첫번째 특징은. 먼저 Union-Find를 하기전에 모든 노드가 자기자신을 가리킨다. 즉. 처음에는 자기자신이 연결된 노드간의 꼭대기. 루트노드라고 보는것. class Un..