본문 바로가기

전체 글

(79)
플레이어를 기준으로 n크기의 반지름을 가진 원의 접선 그리기. 오늘의 구현. 플레이어를 중심으로 n 크기의 반지름을 가진 원의 접선 그려보기. 1.Debug.DrawLine() 을 사용해 반지름과, 접선 그려보기. 접선은 해당 점에서 원의 경계에 수직이며, 원의 중심을 지나는 직선과 평행합니다. 원의 접선을 구하기 위해서는 접하는 점과 원의 중심을 알아야 합니다. 해당 점과 원의 중심을 연결하여 구한 벡터는 원의 접선이 됩니다. 순서 원의 중심과 랜덤한 레디언값을 사용해 벡터를 구할 것 입니다. 레디언 값에 90도를 더한 각도를 사용하여, 원의 접선 벡터를 구합니다. 위에서 구한 벡터 값에서부터 원에 접선 벡터까지 기즈모를 그려줍니다. 1. 반지름을 2f로 설정하고, 랜덤한 레디언 값을 구해줍니다. 원의 중심은 플레이어의 위치 입니다. 레디언 값을 사용해 x,y 좌..
Electric Attack 구현하기 ( +Overlap) 오늘의 구현 1. n명에게 전이되는 번개 공격 구현하기 순서 VFX로 번개 이펙트 만들기 공격시작 이펙트 : 공격시 전류를 모아주는 이펙트 전류 이펙트 : 전류 생성 적을 탐색해 n명에게 번개 공격하기(Overlap) 1. VFX로 번개 이펙트 만들기 기존에 만들어 놓은 번개 이펙트를 응용해 하나는 캐스팅 이펙트, 하나는 공격 이펙트 두가지 이펙트를 만들어 줍니다. 두 이펙트를 프리팹으로 만들어주고 스킬을 시전했을때 캐스팅 이펙트를 instantiate 해주고, 정해진 카운트 만큼 번개가 전이 되면서 전이가 다 끝나면 캐스팅 이펙트가 페이트 아웃되게 만들 것 입니다. 공격 이펙트의 경우 4가지 위치값을 이용해 베지어 곡선을 설정하고 noise를 더해 전류처럼 보이게 만들 것 입니다. 2. 적을 탐색해 n..
A* 알고리즘을 사용한 길찾기 구현 오늘의 구현 A* 알고리즘을 사용한 길 찾기 구현 A* 알고리즘이란 최단 경로 탐색 알고리즘으로 시작점과 도착점 사이의 최단 경로를 찾는 데 사용됩니다. BFS 알고리즘을 알고 있다면 이해하기가 더 쉬울꺼라 생각합니다. 두 알고리즘의 차이점이라면 BFS 는 너비우선 탐색이고 A* 알고리즘은 각 노드의 비용을 계산해 최단 경로를 찾습니다. 경로 찾는데 효과적이지만 탐색 속도가 느릴 수 있습니다. A* 알고리즘의 코스트 계산은 F = G+H 로 F는 예상비용 , G는 경로 비용, H는 경로 평가 함수로, 일반적으로 노드 사이의 거리, 장애물 유무 등을 고려해 계산함으로, 이 경로 평가 함수 설정에 따라 알고리즘의 성능이 결정됩니다. 여기서는 단순하게 출발 지점과 도착지점 사이의 직선거리로 계산할 것입니다.(..
Editor 구현하기 1. Board 판 만들기 2.Editor 만들기 1.Board 판 만들기 단순한 보드판 생성 함수를 만듭니다. x*y 크기의 보드판을 생성합니다. 보드판은 1개만 존재할 것이기 때문에 보드판이 생성되었을때 또 다른 보드판이 있는지 확인후 있다면 그 즉시 삭제하고 새로운 보드판을 만듭니다. public void BoardGenerator() { string holderName = "BoardHolder"; if (transform.Find(holderName)) { DestroyImmediate(transform.Find(holderName).gameObject); } Transform boardHolder = new GameObject(holderName).transform; boardHolder.tr..
같은 맵 계속 반복 시키기(3D). 오늘의 구현. 만들어진 맵들을 돌려가며 반복적으로 생성시키기. 1. 변수 플레이어가 이동한 거리에 따라 지나친 맵은 삭제하고, 기존에 맵을 플레이어가 진행하는 방향쪽에 맵을 이어 붙일것 입니다. 필요한 변수는 플레이의 위치와, 반복 시킬 맵 프리팹, 지금은 플레이어가 앞으로만 진행할 것이기 때문에 z축의 증가량 만 확인 할 것 입니다. 생성할 맵의 길이로 플레이어가 어느정도 이동했을때 맵을 생성할지 정할 것 입니다. 진행 방향으로부터 처음 생성할 맵은 3개 이며, 플레이어가 이동할때마다 가장 먼저 생겨난 맵을 삭제하고 가장 먼곳에 맵을 생성 할 것 입니다. public Transform player; public GameObject[] maps; private List activeMaps; private..
1인칭 시점 구현하기 + 이동 오늘의 구현 1인칭 시점 만들기 마우스 X,Y를 Input.GetAxisRaw로 가져와 델타타임과 마우스 민감도를 곱해줍니다. 위아래를 바라보게 하기 위해선 x 축으로 회전 시켜야 하고, 오른쪽 왼쪽으로 회전시키기 위해서는 y축을 움직여 줘야합니다. y축기준으로 회전시킬때 음의 방향이 위를 바라봅니다. 위아래 90도를 넘겨 카메라가 뒤집히는 경우를 방지하기 위해 클램핑 해줍니다. 마우스의 움직에 따라 메인카메라의 로테이션을 바꿔줍니다. 양옆으로 움직일때 플레이어의 방향도 바꿔주야 하기 때문에 플레이어의 로테이션 y축만 업데이트 해줍니다. 플레이어가 내가 원하는 방향으로 움직이게 하기위해 빈 게임오브젝트(body)를 플레이어안에 생성해 이를 이용해 이동 방향을 정해줍니다. rigibody.AddForce ..
VFX, 전류 Trail 구현하기 오늘 구현 전류 trail 구현하기. Visual Effect Subgraph Operator 생성. (Random Direction 노드 만들기) ParticleId를 시드로 사용해 랜덤한 위치값을 생성하기위해 노드 생성합니다. 단위원 안에 랜덤한 세타값을 가져와 싸인, 코싸인으로 Vector2 값을 설정합니다 z축 설정과 함께 particle들을 안쪽으로 좀더 밀집시켜 줍니다. 2번과 3번을 이용해 Vector3 값을 만들어준 뒤 이 값을 반환해줍니다 Visual Effect Graph 생성 파티클 세팅하기. Set Target Position 으로 랜덤한 위치까지 파티클이 이동 하도록 합니다. 랜덤한 백터값과 y축 벡터가 만드는 평면의 수직을 구한뒤 Normalize 해준 값을 Set Custom..
프로그래머스 소수 만들기 주어진 숫자 배열이 주어지고, 중복되지 않은 숫자 3개를 선택해 소수를 만들때 만들 수 있는 소수의 개수를 구하는 문제. 위 문제에서는 nums의 배열이 50이 최대기 때문에 간단하게 풀 수 있는 문제. 주어진 숫자 3개를 더했을 때 나올 수 있는 가짓수를 구한다면 포문 하나로도 풀 수 있을 것입니다. 보통 조합을 구하는 공식은 nCr로, 0부터 100까지 중복되지 않은 3개의 숫자를 선택하여 더할 때, C(100, 3) = 100! / (3! * (100-3)!) = 100 * 99 * 98 / (3 * 2 * 1) = 161,700 가지가 나옵니다. using System; class Solution { public int solution(int[] nums) { int answer = 0; for(..