본문 바로가기
반응형

개발/Unity235

유니티 - 리액트에서 Unity 오브젝트 컨트롤하기 (Communication from React to Unity) Unity 전체 링크 리액트 전체 링크 참고 - 유니티 WebGL + React 라우터 적용하기 - Unity에서 리액트로 이벤트 호출하기 - https://react-unity-webgl.dev/docs/api/send-message 유니티 WebGL을 React에서 빌드하였다면, 이제 리액트에서 유니티의 오브젝트를 움직여보자. 먼저 큐브에 있는 스크립트는 아래와 같이 수정한다. 천천히 회전하고 있는 큐브를 리액트에서 멈추거나 다시 움직이게 할 예정이다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { bool rotating = true; flo.. 2023. 3. 23.
유니티 - 라인 렌더러로 그리드 만들기 (Make Grid with LineRenderer) Unity 전체 링크 아래 그림과 같이 라인 렌더러를 이용하여 그리드를 만들어보자. 빈 오브젝트에 LineGrid.cs를 추가한다. sr, sc는 시작 좌표, rowCount, colCount는 Grid의 개수, gridSize는 그리드의 크기가 된다. 구현 라인 렌더러를 여러 개 쓰는 방법으로 적당히 구현해도 되지만, 여기에서는 한 개의 라인 렌더러만 써서 구현해보자. 먼저 하나의 선으로 그리드를 만들기 위해서는 아래 처럼 ㄹ자 모양이 되도록 선을 그린다. x 좌표는 gridSize만큼 증가시키고, toggle을 이용해서 z 좌표는 늘렸다가 줄였다가를 반복하면 된다. int toggle = -1; Vector3 currentPos = new Vector3(sr, this.transform.positio.. 2023. 1. 1.
유니티 - 컨벡스 헐로 임의의 점을 모두 포함하는 사각형 구하기 (Points in a Rectangle with Convex Hull) Unity 전체 링크 참고 - 스택 - 임의의 다각형을 포함하는 사각형 구하기 - 볼록 껍질 (Convex Hull, Graham Scan) - 컨벡스 헐로 볼록 다각형을 만드는 점의 좌표 구하기 임의의 다각형을 포함하는 사각형을 구할 때, 다각형의 좌표가 시계 방향이 아닌 경우, 아래와 같이 사각형을 제대로 만들지 못하는 경우가 발생한다. 따라서 컨벡스 헐로 볼록 다각형을 만들고, 다시 볼록 다각형을 포함하는 사각형을 만들자. 구현 PolygonInSquare.cs에서 아래의 내용을 추가한다. 기존의 함수랑 이름이 겹치기 때문에 함수 이름(ccwBy2D → ccw, compare → compare2)을 변경하였다. Vector3 findMinXZ(List position) { Vector3 min = .. 2022. 12. 28.
유니티 - 컨벡스 헐로 볼록 다각형을 만드는 점의 좌표 구하기 (Find Points that Make the Polygon with Convex Hull) Unity 전체 링크 참고 - 스택 - 비교 함수를 이용하여 리스트 정렬하기 - 임의의 다각형을 포함하는 사각형 구하기 - 볼록 껍질 (Convex Hull, Graham Scan) - 컨벡스 헐로 임의의 점을 모두 포함하는 사각형 구하기 아래와 같이 임의의 점이 불규칙하게 있다고 가정하자. 컨벡스 헐(그레이엄 스캔)을 이용하면 아래와 같이 모든 점을 포함하는 볼록 다각형을 만들 수 있다. 구현 구현은 BOJ 1708 - 볼록 껍질을 참고해서 C# 버전으로 만든다. 유니티에서는 (x, y)가 아니라 (x, z)에서 가장 작은 좌표를 먼저 찾는다. Vector3 findMinXZ(List position) { Vector3 min = new Vector3(100000, 0, 100000); foreach .. 2022. 12. 28.
유니티 - 스톱워치로 실행시간 확인하기 (Unity Stopwatch Timer) Unity 전체 링크 유니티의 스톱워치를 이용해 for문과 foreach의 속도를 비교해보자. Stopwatch는 System.Diagnostics을 선언하면 사용할 수 있다. using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Diagnostics; public class UnityTimer : MonoBehaviour { Stopwatch watch = new Stopwatch(); void Start() { watch.Start(); // 실행할 코드 watch.Stop(); } } list에 1 ~ 10을 넣은 후, 1부터 10까지 1000000번 더해보자. using System.Co.. 2022. 12. 16.
유니티 - 임의의 다각형을 포함하는 사각형 구하기 (Polygon in a Rectangle) Unity 전체 링크 참고 - 2차원 평면에서 유한한 선의 교점 구하기 - 튜플로 여러 값 반환하기 - Vector3.Cross로 평면 위에서 시계 방향 판단하기 - 비교 함수를 이용하여 리스트 정렬하기 - 3차원에서 점과 직선의 거리 - 3차원에서 점과 직선 사이의 수선의 발 구하기 - 볼록 껍질 (Convex Hull, Graham Scan) - 컨벡스 헐로 볼록 다각형을 만드는 점의 좌표 구하기 - 컨벡스 헐로 임의의 점을 모두 포함하는 사각형 구하기 아래와 같이 임의의 다각형(삼각형, 별, 번개)이 있다. 그리고 다각형의 점을 모두 포함하는 사각형이 반드시 존재한다. 다각형의 좌표(y = 0)가 시계 방향으로 주어질 때, 이 다각형의 점을 모두 포함하는 사각형 좌표를 구해보자. 사각형 밑면의 두 .. 2022. 12. 10.
유니티 - 3차원에서 점과 직선 사이의 수선의 발 구하기 (Find a Point Perpendicular to a Line) Unity 전체 링크 참고 - 3차원에서 점과 직선의 거리 - 임의의 다각형을 포함하는 사각형 구하기 위의 링크에서 점과 직선 사이의 거리를 구하였다. 점 A와 점 B로 구성된 직선 AB와 점 D의 가장 가까운 경로를 만드는 점 H가 있다. 여기서 점과 직선 사이의 수선의 발(H)을 구해보자. 직선 AB = line1, 직선 BD를 line2라고 하자. 이때 line1과 line2의 각도는 θ다. 벡터의 내적에 의하면 다음 공식이 성립한다. 따라서 cosθ는 다음과 같다. cosθ와 직선 BD의 길이를 알면 직선 BH의 길이를 알 수 있다. 즉, 점 H는 점 B에서 점 A의 벡터 방향으로 길이 BH의 크기를 빼면 된다. 위의 설명을 그대로 구현하면 아래와 같다. Vector3 getPerpendicula.. 2022. 12. 10.
유니티 - 3차원에서 점과 직선의 거리 (Find Distance between a Point and a Line) Unity 전체 링크 참고 - 3차원에서 점과 직선 사이의 수선의 발 구하기 - 임의의 다각형을 포함하는 사각형 구하기 다음과 같이 직선 AB에 임의의 점 C가 있고, 점 D가 있다고 하자. 이때 직선 AB와 점 D의 거리 distance의 공식은 다음과 같다. 유니티 C#으로 구현하면 다음과 같다. 점 A와 점 B로 만든 직선의 임의의 점 C를 따로 정할 필요 없이, 점 A를 선택하였다. float getDistancePointAndLine(Vector3 A, Vector3 B, Vector3 point) { Vector3 AB = B - A; return (Vector3.Cross(point - A, AB)).magnitude / AB.magnitude; } Unity Plus: Easy 2D, 3D.. 2022. 12. 10.
유니티 - OnGUI, ProfilerRecorder로 런타임 드로우 콜 확인하기 (How to Get Draw Call Count at Runtime) Unity 전체 링크 참고 - OnGUI로 실시간 초당 프레임 수 확인하기 - 드로우 콜 횟수 최적화하기 - ProfilerRecorder 메뉴얼 - Rendering Profiler module 메뉴얼 유니티 게임 씬에서 Stats에서는 성능과 관련된 정보를 볼 수 있다. 유니티 에디터에서 말고 runtime에 직접 확인할 수 있도록 해보자. - ProfilerRecorder 메뉴얼 - Rendering Profiler module 메뉴얼 유니티에서 제공하는 ProfilerRecorder를 이용하면 위의 통계 정보를 확인할 수 있다. 위의 링크에 제시된 코드는 다음과 같다. void OnEnable() { setPassCallsRecorder = ProfilerRecorder.StartNew(Profi.. 2022. 12. 10.
반응형