본문 바로가기
반응형

개발/Unity235

유니티 - 멀티 터치 드래그로 오브젝트 크기 변경하기 (Change Object Scale with Multi Touch Drag) Unity 전체 링크 참고 - OpenGL로 멀티 터치 이펙트 만들기 - 멀티 터치 드래그를 이용하여 카메라 줌 인 / 아웃 오브젝트를 멀티 터치 드래그로 크기를 변경해보자. 동작 원리는 멀티 터치 드래그를 이용하여 카메라 줌 인 / 아웃과 같다. 각각의 오브젝트에 있는 스크립트의 OnMouseDrag에 아래와 같이 구현하면 된다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class MultiTouchScale : MonoBehaviour { float zoomSpeed = 0.05f; void OnMouseDrag() { if (Input.touchCount == 2) { Vector2 pr.. 2023. 7. 15.
유니티 - 멀티 터치 드래그를 이용하여 카메라 줌 인 / 아웃 (Camera Zoom in / out with Multi Touch Drag) Unity 전체 링크 참고 → 시네머신 튜토리얼 링크 (시네머신을 이용하여 카메라 간편하게 조작하기) - 마우스 스크롤로 카메라 줌 인 / 아웃 - OpenGL로 멀티 터치 이펙트 만들기 - 멀티 터치 드래그로 오브젝트 크기 변경하기 멀티 터치 이펙트를 적용한 후, 멀티 터치를 드래그 했을 때, 카메라가 줌 인 / 줌 아웃이 되도록 해보자. 카메라 줌 인 / 줌 아웃 마우스 스크롤로 카메라를 줌 인 / 아웃하였을 때, fieldOfView를 변경하거나 카메라가 향한 방향으로 앞 / 뒤로 이동하였다. 여기서는 카메라의 위치를 변경시킨다. 먼저 카메라에 있는 MobileTouch.cs에서 radius를 조금 줄이고, zoomSpeed 변수를 추가한다. float radius = 0.02f; float zoo.. 2023. 7. 15.
유니티 - OpenGL로 멀티 터치 이펙트 만들기 (Simple Screen Multi Touch Effect with Unity GL) Unity 전체 링크 참고 - 유니티 GL로 화면에 그림 그리기 - OpenGL로 화면에 선 그리기 - OpenGL로 화면 터치 이펙트 만들기 - 멀티 터치 드래그를 이용하여 카메라 줌 인 / 아웃 - 멀티 터치 드래그로 오브젝트 크기 변경하기 화면 터치 이펙트를 만들었다면, 이제 멀티 터치 효과도 만들어보자. 아래는 여러 개의 손가락으로 화면을 터치한 것을 녹화하였다. 여러 개의 원을 만들어야 하기 때문에 원을 만드는 부분을 함수로 분리한다. void makeCircle(Vector3 touchPos, Color color) { GL.Color(color); List pos = new List(); for (int i = 0; i < numberOfTriangle; i++) { float angle =.. 2023. 7. 10.
유니티 - OpenGL로 화면 터치 이펙트 만들기 (Simple Screen Touch Effect with Unity GL) Unity 전체 링크 참고 - 유니티 GL로 화면에 그림 그리기 - OpenGL로 화면에 선 그리기 - OpenGL로 멀티 터치 이펙트 만들기 - 절차적 메시로 정다각형, 원 만들기 - 자식 오브젝트를 원형으로 배치하기 화면을 클릭했을 때, OpenGL로 터치 이펙트를 간단히 만들어보자. 삼각형 그리기 Unity GL 클래스에서는 Circle을 제공하지 않는다. 따라서 삼각형을 여러 개 그려서 원처럼 보이게 하면 된다. 먼저 아래 스크립트를 카메라에 추가해서 삼각형을 그려보자. 클릭한 화면의 좌표를 list에 추가하여 삼각형을 그리게 하였다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class.. 2023. 7. 10.
유니티 - OpenGL로 화면에 선 그리기 (Draw a Line using Unity GL) Unity 전체 링크 참고 - Line Renderer로 선 그리기 - 클릭 후 화면 영역 구분하기 - 유니티 GL로 화면에 그림 그리기 - OpenGL로 화면 터치 이펙트 만들기 - OpenGL로 멀티 터치 이펙트 만들기 - 쿼터니언 AngleAxis로 벡터 회전하기 - 안드로이드 OpenGL 설정 OpenGL로 화면에 그림을 그리면 터치나 드래그가 제대로 반영되고 있는지 확인할 수 있다. 예를 들어 다음과 같이 최초로 클릭한 위치에서 마우스를 드래그한 위치까지 선을 그려보자. touchFlag를 이용해 현재 화면을 클릭하고 있는지 감지한다. ScreenToViewportPoint를 이용하면 화면의 위치를 (0, 0)에서 (1, 1)로 변환해준다. touchFlag가 false인 상태에서 처음 입력된 .. 2023. 7. 10.
유니티 - 쿼터니언 AngleAxis로 벡터 회전하기 (Rotate Vector with Quaternion AngleAxis) Unity 전체 링크 참고 - 퍼블릭 변수 변경시 이벤트 발생 큐브를 점 A, Sphere를 점 B라고 하자. 이때 쿼터니언의 AngleAxis 메서드로 벡터 AB를 회전시켜보자. 빈 오브젝트를 만들고 AngleAxisText.cs를 추가한다. 기준이 되는 두 점과 변경할 각도를 선언한다. public Transform dotA, dotB; public float angle; 각도가 변경되면 즉시 반영되기 위해 OnValidate를 이용하였다. 아래 코드는 angle이 변할 때, 벡터 AB를 축을 기준으로 회전한다. 여기서 축은 XZ 평면이므로 XZ 평면의 노멀 벡터인 new Vector3(0, 1, 0)가 된다. 회전된 벡터 rot은 점 A의 원래 좌표 (startA)에 더해주면 된다. void OnV.. 2023. 7. 10.
유니티 - 안드로이드 OpenGL 설정 (Unity Android OpenGL Settings) Unity 전체 링크 참고 - 유니티 GL로 화면에 그림 그리기 위 링크에서 OpenGL을 사용하기 위해 Shader를 만들었다. Shader "Draw/Quads" { SubShader { Pass { } } } 그리고 스크립트에서 material에 할당한다. Material mat; void Start() { mat = new Material(Shader.Find("Draw/Quads")); } 하지만 이 코드는 안드로이드에서 실행도지 않는다. Shader를 빌드에 포함해야 정상적으로 동작한다. [Edit] → [Project Settings] → [Graphics]에서 Always Included Shaders의 Size를 증가시킨다. 그리고 직접 만든 Shader(Draw/Quads)를 추가하면 .. 2023. 7. 10.
유니티 AR - 미드 에어 앵커로 오브젝트 생성하기 (Vuforia Mid Air Anchors) Unity 전체 링크 참고 - 유니티 AR 뷰포리아 튜토리얼 - 그라운드 플레인으로 평면 인식하기 - 유니티 더블 클릭 구현하기 미드 에어 앵커(Mid Air Anchors)를 이용하면 이미지를 인식하지 않아도 공간에 AR 오브젝트를 만들 수 있다. 뷰포리아에서 제공하는 미드 에어 앵커를 사용해보자. Mid Air Anchors 적용하기 Vuforia Engine에서 아래 두 오브젝트를 추가한다. Mid Air는 Ground Plane과 사용 방법이 거의 동일하다. 예를 들어 Ground Plane Stage는 Mid Air Stage와 Stage Type만 다를 뿐이다. Ground Plane에서 Plane Finder에 Anchor Stage를 추가한 것처럼, Mid Air Positioner에 Mi.. 2023. 7. 5.
유니티 AR - 그라운드 플레인으로 평면 인식하기 (Vuforia Ground Plane) Unity 전체 링크 참고 - 유니티 AR 뷰포리아 튜토리얼 - 미드 에어 앵커로 오브젝트 생성하기 - 유니티 더블 클릭 구현하기 그라운드 플레인은 평면을 인식하는 기술이다. 뷰포리아에서는 평면을 인식하면, 평면에서 AR 오브젝트를 생성할 수 있게 한다. Ground Plane 적용하기 Vuforia Engine에서 아래 두 오브젝트를 추가한다. Plane Finder에서 ContentPositioningBehaviour.cs의 Anchor Stage를 Ground Plane Stage로 설정한다. 그리고 AR로 만들 오브젝트를 Ground Plane Stage의 자식 오브젝트로 설정한다. 제공되는 Ground Plane Stage는 100cm 기준이기 때문에 오브젝트의 사이즈를 적절히 줄인다. 위에서 .. 2023. 7. 4.
반응형