본문 바로가기
반응형

유니티245

유니티 - 라인 렌더러로 간단한 화살표 만들기 (Make Simple Arrow with LineRenderer) Unity 전체 링크 참고 - 쿼터니언으로 구현한 단진자의 운동 - 쿼터니언으로 구현한 단진자의 운동 확장 - 독립된 단진자의 운동 - 런타임에 단진자 운동 설정하기 - 라인 렌더러를 이용한 단진자 속도의 시각화 - 라인 렌더러로 간단한 화살표 만들기 - 운동하는 단진자의 로프를 끊기 라인 렌더러를 이용해 간단한 화살표를 만들어보자. 이전 글에서 라인 렌더러로 선을 그었으니 그 반대의 방향으로 선을 만들 수 있다. 이 벡터를 양 옆으로 정해진 각도만큼 움직인다. 그러면 3개의 점으로 삼각형을 추가하면 화살표가 만들어진다. 코드로 보면 다음과 같다. 여기서 기준이 되는 normal은 startPlaneVector가 된다. void makeArrow(LineRenderer lr, Vector3 start, .. 2023. 4. 3.
유니티 - 라인 렌더러를 이용한 단진자 속도의 시각화 Unity 전체 링크 참고 - 쿼터니언으로 구현한 단진자의 운동 - 쿼터니언으로 구현한 단진자의 운동 확장 - 독립된 단진자의 운동 - 런타임에 단진자 운동 설정하기 - 라인 렌더러를 이용한 단진자 속도의 시각화 - 라인 렌더러로 간단한 화살표 만들기 - 운동하는 단진자의 로프를 끊기 이제 단진자의 속도를 라인 렌더러로 표현해보자. 속도가 클수록 라인의 길이가 길어진다. 속도의 크기 속도의 크기는 에너지 보존 법칙을 이용해서 구할 수 있다. 역학적 에너지는 운동 에너지(K)와 위치 에너지(U)의 합이다. 단진자가 처음 시작되는 경우에는 속도가 0이기 때문에 K = 0이 되고, 총 에너지는 다음과 같다. 여기서 h는 this.transform.position.y가 된다. 이후 h → h'가 된다면, 운동에.. 2023. 4. 3.
유니티 - 런타임에 단진자 운동 설정하기 (Runtime Independent Simple Pendulum) Unity 전체 링크 참고 - 드래그로 오브젝트 움직이기 - 쿼터니언으로 구현한 단진자의 운동 - 쿼터니언으로 구현한 단진자의 운동 확장 - 독립된 단진자의 운동 - 런타임에 단진자 운동 설정하기 마우스로 단진자를 런타임에 이동시켜서 다시 단진자 운동이 되도록 해보자. 편의상 x는 0으로 고정한다. (오브젝트 드래그가 yz 평면만 가능하도록 한다.) Start에서 했던 초기화를 initSettings로 모두 옮긴다. startRot도 여기서 0으로 초기화한다. void initSettings() { float angle = Vector3.Angle(this.transform.position - pivot.position, Vector3.down); startAngle = 0.0f; endAngle = a.. 2023. 3. 29.
유니티 - 독립된 단진자의 운동 (Independent Simple Pendulum with Unity LerpAngle) Unity 전체 링크 참고 - 쿼터니언으로 구현한 단진자의 운동 - 쿼터니언으로 구현한 단진자의 운동 확장 - 독립된 단진자의 운동 - 런타임에 단진자 운동 설정하기 쿼터니언으로 구현한 단진자의 운동의 경우 pivot을 회전시키고, pivot의 자식으로 단진자를 설정해야 한다. 이러한 제약 조건은 나중에 개발을 확장할 때 불편할 수 있다. LerpAngle 메서드를 이용하면 부모 - 자식 관계가 아닌 독립된 상태에서 단진자 운동을 구현할 수 있다. Mathf.LerpAngle도 Quaternion.Lerp와 원리가 같으므로, 시작 각도, 도착 각도가 필요하다. 그리고 최초 세 점을 지나는 평면(pivot, pivot 바로 아래, 단진자)을 저장한다. pivot → oscillator 벡터의 최초 상태는 .. 2023. 3. 29.
유니티 - 쿼터니언으로 구현한 단진자의 운동 확장 (Expanded Simple Pendulum with Unity Quaternion) Unity 전체 링크 참고 - 세 점을 지나는 평면 구하기 - 쿼터니언으로 구현한 단진자의 운동 - 쿼터니언으로 구현한 단진자의 운동 확장 - 독립된 단진자의 운동 - 런타임에 단진자 운동 설정하기 쿼터니언으로 구현한 단진자의 운동의 경우 투명한 Plane을 추가해서 그림으로 보면 아래와 같은 상황이다. (x = 0으로 고정) Plane의 설정은 현재 아래와 같다. 마찬가지로 pivot과 object의 좌표도 x = 0이다. 이제 object의 x 좌표를 변경해보자. 현재의 코드대로라면 아래와 같이 x 축이 고정된 채로 부자연스럽게 단진자 운동을 하게 된다. x = 0이라고 가정한 코드이기 때문에 수정이 필요하다 오브젝트가 어디에 있던지 간에 자연스럽게 움직일 수 있도록 해보자. 평면 추가 먼저 원할한 .. 2023. 3. 29.
유니티 - 쿼터니언으로 구현한 단진자의 운동 (Simple Pendulum with Unity Quaternion) Unity 전체 링크 참고 - 쿼터니언과 회전의 덧셈 - 쿼터니언으로 구현한 단진자의 운동 - 쿼터니언으로 구현한 단진자의 운동 확장 - 독립된 단진자의 운동 - 런타임에 단진자 운동 설정하기 빨간색 Sphere를 pivot으로 하는 단진자를 Quaternion.Lerp를 이용해서 구현해보자. 쿼터니언의 Lerp 메서드 Quaternion.Lerp(start, end, float t = [0 ~ 1])은 0에 가까우면 start의 각도가, 1에 가까우면 end의 각도가 된다. 값이 0.5라면 start와 end의 중심이 된다. 단진자는 가운데로 갈수록 속도가 커지고 양 옆에서는 속도가 0이 된다. 그리고 이것이 계속 반복된다. 이러한 조건을 잘 만족하는 함수는 삼각함수이다. 그런데 sinΘ 함수는 -1 .. 2023. 3. 29.
유니티 - 세 점을 지나는 평면 구하기 (Creating a Plane from 3 Dots) Unity 전체 링크 참고 - 평면과 직선의 접점 좌표 구하기 - 3차원 세 점의 좌표로 삼각형의 넓이 구하기 - Vector3.Cross로 평면 위에서 시계 방향 판단하기 세 점의 좌표를 지나는 평면을 만들어보자. 먼저 투명한 평면과 임의의 세 점(Sphere)를 만든다. 유니티 오브젝트 Plane의 노멀 벡터는 transform.up이다. 그리고 유니티에서 제공하는 Plane으로 매우 쉽게 임의로 평면을 만들 수 있다. 여기서 normal 벡터를 유니티 오브젝트 평면의 transform.up으로 설정하면 된다. 이 평면은 세 점 중 하나를 지나기만 하면 되므로 position은 적절히 설정하면 된다. void setPlane(Vector3 a, Vector3 b, Vector3 c) { Plane p.. 2023. 3. 27.
유니티 - 스트로보 효과 (Stroboscopic Effect with Unity) Unity 전체 링크 스트로보 효과(Stroboscopic Effect)는 착시 현상 중 하나다. 짧은 시간 내에 반복적으로 연속적인 움직임이 나타날 때 생기는 현상이다. 예를 들어 앞으로 회전하는 자동차 바퀴의 속도가 높아지면 뒤로 회전하는 것처럼 보이게 된다. 바퀴에서 나타나는 스트로보 효과를 유니티로 재현해보자. 오브젝트를 회전하는 스크립트를 Sphere에 추가하자. Range를 이용해 슬라이드 바로 rotateSpeed를 0 ~ 1500 사이가 되도록 하였다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class StroboscopicEffect : MonoBehaviour { [Rang.. 2023. 3. 26.
언리얼 5 - 유니티 vs 언리얼 용어 비교 (Quick Glossary Unreal vs Unity) Unreal 5 전체 링크 Unity 전체 링크 언리얼 메뉴얼에서는 유니티 개발자를 위한 간략 용어집을 제공한다. 유니티에서 사용하는 개념은 대부분 언리얼에도 존재하지만 용어가 다르다. 또한 유니티에서 씬(Scene)은 언리얼에서 맵(Map)이라고 한다 맵 파일에는 레벨과 오브젝트에 대한 정보, 라이팅 데이터 등이 포함된다. 2023. 3. 25.
반응형