Unity

    간단하게 오브젝트 간의 각도 구하는 방법

    이전 게시글에서 내각을 이용해 두 물체간의 각도를 구하는 방법에 대해서 설명했습니다. 이번 글에서는 Vector3.SignedAngle() 함수를 이용해 시야 범위에 타켓 오브젝트가 들어와 있는지 확인하는 방법을 설명하겠습니다. Vector3.SignedAngle() 함수 Vector3.SignedAngle() 함수는 두 벡터의 방향 사이의 각도를 구하는 함수입니다. 이 함수는 부호가 있는(-180 ~ 180)각도를 반환합니다. float SignedAngle(Vector3 from, Vector3 to, Vector3 axis) //from: 시작 벡터 //to: 목표 벡터 //axis: 회전 축 벡터 이 함수는 두 벡터 from과 to의 방향 사이의 각도를 axis를 기준으로 계산하며, 결과값은 부호..

    Vector3 : Lerp, SmoothDamp, MoveTowards 비교

    Unity에서 오브젝트의 위치나 방향을 부드럽게 이동시키는 방법은 여러 가지가 있습니다. 그 중에서도 Lerp, SmoothDamp, MoveTowards 메서드는 가장 많이 사용되는 방법입니다. 이 세 가지 메서드는 모두 오브젝트의 현재 위치 또는 방향에서 목표 위치 또는 방향으로 부드럽게 이동시킵니다. 하지만 각각의 메서드에는 고유한 특징과 사용 방법이 있습니다. Lerp Lerp 메서드는 "선형 보간"을 의미하며, 두 개의 벡터 사이에서 선형적으로 보간된 값을 반환합니다. 시작 벡터와 목표 벡터, 그리고 보간 비율을 인자로 받습니다. 이 메서드는 주어진 비율에 따라 시작 벡터와 목표 벡터 사이에서 보간된 값을 반환합니다. Vector3 newPosition = Vector3.Lerp(currentP..

    헷갈리는 오브젝트 회전 방법 Part 2 (Lerp, Slerp, RotateTowards)

    Quaternion.Lerp() Quaternion.Lerp() 메서드는 두 쿼터니언 사이의 선형 보간을 수행합니다. 이는 두 점 사이를 직선으로 연결하는 것과 유사합니다. 이 방법은 보간 속도가 일정하기 때문에 빠르지만, 이러한 선형 보간은 짧은 거리에서는 잘 작동하지만 긴 거리에서는 비현실적으로 보일 수 있습니다. Quaternion.Lerp() 메서드의 구문은 다음과 같습니다. Quaternion.Lerp(Quaternion from, Quaternion to, float t); // from 시작 쿼터니언 // to 목표 쿼터니언 // t 보간 비율 0 - 1 Quaternion.Lerp() 메서드는 다음과 같이 작동합니다. 시작 쿼터니언과 종료 쿼터니언의 차이를 구합니다. 차이를 보간 비율 (t..

    시야 범위에 타켓 오브젝트가 들어와 있는지 확인하는 방법

    Unity 오브젝트의 시야 범위에 타켓 오브젝트가 들어와 있는지 확인하는 방법은 여러 가지가 있습니다. 그 중 하나인 두 오브젝트의 내적을 구하고, 라디안(π)을 호도각(0~360°)으로 변환시켜 사용하는 방법을 소개하겠습니다. 내적이란? 내적은 두 벡터의 크기와 방향의 일치 정도를 나타내는 값으로 Vector3.Dot() 메서드를 통해 구할 수 있습니다. A⋅B=∣A∣⋅∣B∣⋅cos(θ) 여기서 ∣A∣와 ∣B∣는 각각 벡터 A와 B의 크기(길이)이고, θ는 A와 B 사이의 각입니다. 내적의 결과는 스칼라값입니다. public static float Dot(Vector3 lhs, Vector3 rhs) => (float) ((double) lhs.x * (double) rhs.x + (double) lh..

    C# 프로젝트 파일이 열리지 않을 때 (VSCode)

    is in unsupported format (for example, a traditional .Net Framework project). It need be converted to new SDK style to work in C# Dev Kit. VSCode에 이와 같은 로그가 나오며 Visual Studio에서는 작업이 되지만 VSCode에서는 안되는 경우 필자의 경우 Mac으로만 작업을 하다 오랜만에 Window10에서 포스팅용 유니티 프로젝트를 생성했더니 그랬다. 아마 VSCode용 C# Extension과 Unity 및 .Net Install Tool 이 생기거나 업데이트되어서 그런것 같다. https://code.visualstudio.com/ Visual Studio Code - Code E..

    헷갈리는 오브젝트 회전 방법 Part 1 (LookRotation, LookAt, RotateTowards)

    Unity에서 오브젝트를 회전하는 방법에는 여러 가지가 있습니다. 그 중에서도 가장 일반적인 방법은 쿼터니언을 사용하는 것입니다. 쿼터니언은 3차원 회전을 표현하는 데 사용되는 4차원 벡터입니다. Unity에서 쿼터니언을 사용하여 오브젝트를 회전하는 방법은 다음과 같습니다. 먼저, Quaternion.LookRotation() 또는 transform.LookAt() 메서드를 사용하여 회전할 값인 쿼터니언 값을 구합니다. 그런 다음, Transform.rotation 속성을 사용하여 오브젝트의 회전 쿼터니언을 설정합니다. transform.LookAt() 메서드 transform.LookAt() 메서드는 오브젝트를 지정된 위치와 방향으로 회전합니다. public void LookAt(Transform ta..

    Firebase Database에 데이터를 저장하는 방법

    Firebase Database는 Firebase에서 제공하는 NoSQL 데이터베이스입니다. NoSQL 데이터베이스는 관계형 데이터베이스와 달리, 데이터를 행과 열로 저장하지 않고, 키-값 쌍으로 저장합니다. Firebase Database에 데이터를 저장하는 방법은 여러 가지가 있습니다. 그 중 대표적인 메서드는 다음과 같습니다. SetRawJsonValueAsync UpdateChildrenAsync SetValueAsync SetPriorityAsync SetRawJsonValueAsync SetRawJsonValueAsync() 메서드는 지정된 경로에 JSON 값을 저장하는 메서드입니다. 이 메서드는 지정된 경로에 JSON 값을 저장합니다. JSON 값은 키-값 쌍으로 구성된 객체 또는 배열이 될..

    Firebase 토큰을 가져오는 방법

    Firebase 토큰은 Firebase Cloud Messaging(FCM)을 사용하여 앱에 알림을 보내기 위해 필요한 고유한 식별자입니다. Firebase 토큰을 가져오는 방법은 여러 가지가 있습니다. 그 중 하나는 FirebaseMessaging.GetTokenAsync() 메서드를 사용하는 것입니다. FirebaseMessaging.GetTokenAsync() 메서드는 비동기 메서드로, 토큰을 가져오는 작업이 완료되면 TaskCompletionSource 객체를 통해 토큰을 전달합니다. FirebaseMessaging.GetTokenAsync().ContinueWithOnMainThread() 메서드는 FirebaseMessaging.GetTokenAsync() 메서드의 결과를 UI 스레드에서 처리..