[Unity] 캡슐 플레이어가 기울면서 혼자 움직이는 현상
·
공부/Unity
Player 이동키를 하나도 누르지 않았는데 밑바닥이 동그래서 혼자 움직이는 오류가 생겼다. Player -> Rigidbody -> Constraints -> Freeze Rotation에 있는 X, Y, Z를 모두 On 상태로 해주면 오류가 사라진다.
[Unity] 조준선(Crosshair) 아주 간단하게 만들기
·
공부/Unity
1. Hierarchy -> 우클릭 -> UI -> Image 2. 화면을 2D로 선택 3. Image를 정중앙으로 고정 4. Width, Height를 5로 변경 5. 원하는 색상으로 변경 6. Image -> Source Image -> Knob 클릭 깔끔한 조준선 완성
[Unity] NullReferenceException: Object reference not set to an instance of an object
·
공부/Unity
NullReferenceException: Object reference not set to an instance of an object UnityEditor.Graphs.Edge.WakeUp () (at :0) UnityEditor.Graphs.Graph.DoWakeUpEdges (System.Collections.Generic.List`1[T] inEdges, System.Collections.Generic.List`1[T] ok, System.Collections.Generic.List`1[T] error, System.Boolean inEdgesUsedToBeValid) (at :0) UnityEditor.Graphs.Graph.WakeUpEdges (System.Boolean clearSlotE..
[Unity] Apply Root Motion
·
공부/Unity
화질이 좀 안 좋지만 잘 보면 Player가 몬스터를 공격한 후에 순간적으로 앞으로 가려는 행동을 하며 실제로 위치가 앞으로 이동하고 있다. 이걸 없애려면 Player -> Animator -> Apply Root Motion을 꺼주면 Player가 공격 모션을 취한 뒤에 앞으로 이동하지 않는다.
[Unity] Animator is not playing an AnimatorController
·
공부/Unity
아주아주 단순한 에러다. Object에 있는 Animator로 가서 가지고 있는 Anmation Controller로 비어있는 Controller를 채워주면 된다.
[Unity] Player가 가라앉아서 움직이는 에러 해결하기
·
공부/Unity
갑자기 Player가 반쯤 잠긴 상태로만 움직이기 시작했다. Transform Position Y축 값이 0.006693959로 지정된 상태로 아무리 바꾸려고 해봐도 바뀌지 않는 상태로 멈춰버렸다. 콘솔창에 아무런 로그도 뜨지 않아서 원인을 알 수 없었다. 결과만 검색해서 인터넷에 나와있는 방법을 하나씩 시도해봤다. 1. Navigation Bake Window -> Al -> Navigation을 누른다. 새로 뜬 창에 있는 Bake 버튼을 누른다. 나는 아무런 변화도 없었다. 2. Position의 Y 변경 기본값인 0으로 설정되어있는 Player의 Transform Position Y를 변경해본다. 나는 2로 변경하고 새로 재생해봤지만 변화는 없었다. 3. Player Rigidbody Collis..
[Unity] 코루틴(Coroutine)이란?
·
공부/Unity
게임 플레이어가 스킬을 사용하는데, 그 스킬이 3초 후에 자동으로 꺼지는 스킬이라고 해보자. 평소에 알던 내용으로 이 스킬을 구현하려면 Update문에 스킬을 넣고, 매 프레임마다 스킬을 검사해서 3초라는 시간이 지난 것을 판단하고 그 후에 스킬을 꺼주어야 한다. 3초가 지난 것을 알기 위해 Update문을 사용한다는 것은 쓸데없는 반복이 나오는 매우 비효율적인 방법이다. 이럴 때 사용할 수 있는 것이 코루틴(Coroutine)이다. 코루틴(Coroutine)을 사용하면 내가 원하는 시기에 필요한 횟수만큼만 함수를 실행시킬 수 있으니 불필요한 행동을 하지 않게 된다. using System.Collections; using System.Collections.Generic; using UnityEngine..
[Coding] 같은 내용이 중복되는 함수의 현명한 사용법
·
언어
c#으로 작성된 내용입니다. using System; namespace ConsoleApp1 { class Program { static void Add(int a, int b, string name, int time) { int ab = a + b; int a_b = a - b; Console.WriteLine(ab); Console.WriteLine(a_b); Console.WriteLine($"a의 이름은 {name} 입니다."); Console.WriteLine($"남은 시간은 {time}초입니다."); } static void Add(int a, int b, string name, float time) { int ab = a + b; int a_b = a - b; Console.WriteLine..
[Unity] DontDestroyOnLoad()
·
공부/Unity
Sound의 경우 게임 어디에서도 사용되는 Object다. 어떤 Object는 Scene이 바뀌면서 삭제됐다가 필요한 경우 다시 생성되지만, 계속 필요한 Object는 삭제되는 행위 자체가 쓸데없는 메모리 사용이다. 이때 DontDestroyOnLoad()를 사용해주면 게임이 꺼질 때까지 Object가 삭제되지 않고 필요할 때 언제든 꺼내 쓸 수 있다. https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html Unity - Scripting API: Object.DontDestroyOnLoad The load of a new Scene destroys all current Scene objects. Call Object.DontDest..
[Unity] Mathf란
·
공부/Unity
Mathf는 untiy에서 사용할 수 있는 수학 함수를 말한다. 매우 유용함. Debug.Log(Mathf.Abs(-19)); // 절대값 출력 : 19 Debug.Log(Mathf.Max(2, 5)); // 더 큰 숫자 출력 : 5 Debug.Log(Mathf.Min(2, 5)); // 더 작은 숫자 출력 : 2 Debug.Log(Mathf.Clamp(5, 1, 3)); // 5 : 범위, 1 : 최솟값, 3 : 최댓값을 뜻함. 출력 : 3 https://docs.unity3d.com/kr/530/ScriptReference/Mathf.html Unity - 스크립팅 API: Mathf Success! Thank you for helping us improve the quality of Unity Do..
[Unity] ArgumentException 오류
·
공부/Unity
ArgumentException은 메서드에 호출된 인수 중 잘못된 인수가 있을 때 호출된다. https://docs.microsoft.com/ko-kr/dotnet/api/system.argumentexception?view=net-6.0 ArgumentException 클래스 (System) 메서드에 제공된 인수 중 하나가 유효하지 않을 때 throw되는 예외입니다. docs.microsoft.com 나의 경우 generic type인 T로 enum 값을 받아야 했다. 넘겨주고 싶은 enum의 이름은 GameObjects였는데 s를 뺀 GameObject를 인수로 넘겨준 게 잘못이었다. 기본적으로 제공되는 인수와 비슷한 이름을 지정하고 사용할 때는 오타를 잘 확인하는 습관이 필수다. GameObject..
[Unity] Debug 디버깅과 오류 해결하기
·
공부/Unity
디버깅(Debug 또는 Debugging)이란 프로그래밍을 하면서 오류를 찾고 오류를 수정하는 과정을 말한다. 개발자는 개발보다 디버깅 하는 시간이 더 많다는 말이 있을 정도로 디버깅은 매우매우 중요하다. Unity에서 디버깅하는 방법을 알아보자. 디버깅이 필요하다는 뜻은 오류가 발생했다는 뜻이다. 오류문을 잘 읽어보면 오류가 발생한 이유와 장소를 친절히 설명해주고 있다. 내 오류는 NullReferenceException: Object reference not set to an instance of an object UI_Button.Start () (at Assets/Scripts/UI/UI_Button.cs:39) 이다. 즉, null의 값을 가질 수 없는 object에 null이 들어갔다는 뜻이다..
[Unity] UseGravity, IsKinematic, IsTrigger 실습
·
공부/Unity
https://blog.naver.com/wlsthf0315/222705353083 [Unity] UseGravity, IsKinematic, IsTrigger 실습 Player UseGravity Off / IsKinematic Off / IsTrigger Off Cube UseGravity Off / IsKine... blog.naver.com 동영상 첨부가 안되어 원본 url을 첨부한다...
[Unity] OnCollisionEnter와 OnTriggerEnter
·
공부/Unity
Unity에서 충돌을 묘사하기 위해서는 Collider 컴포넌트를 사용해야 한다. 충돌을 나타내는 함수에는 Collision과 Trigger가 있다. 둘다 collider가 충돌했을 때 사용하는 함수이지만 다른 특징이 있다. ​ ​ OnCollisionEnter의 경우, 충돌의 물리 연산이 이루어지며 서로 관통하지 않는다. Collision을 사용하기 위해서는 1. 나 혹은 상대에게 RigidBody가 있어야 한다. (IsKinematic은 꺼져있는 상태) 2. 나와 상대에게 Collider가 있어야 한다. (IsTrigger은 꺼져있는 상태) ​ OnTriggerEnter의 충돌은 물리 연산 없이 이루어지고 서로 관통한다. Trigger를 사용하기 위해서는 1. 둘 다 Collider가 있어야 한다. ..
[Unity] 오일러 각(eulerAngles)과 쿼터니언(quaternion)
·
공부/Unity
오일러 각(eulerAngles)이란 3차원 공간에서 물체의 방향을 표현하기 위해 오일러가 만든 3개의 각도를 말한다. 오일러 각에는 짐벌락(gimbal lock) 현상이라는 문제가 있다. 서로 다른 회전축이 겹쳐서 한 축에 대한 계산이 불가능한 현상을 말한다. 이 영상을 보면 이해가 매우 잘된다. https://youtu.be/zc8b2Jo7mno 오일러 각에서는 각 축을 개별적으로 계산한 후, 합쳐서 생각하기 때문에 이러한 현상이 나오는데 짐벌락을 피하기 위해 나온 것이 쿼터니언(quaternion)이다. ​ ·쿼터니언은 모든 축을 한 번에 계산하기 때문에 짐벌락 현상이 나오지 않는다. ·회전을 계산할 수 있다. ·180도를 넘어가는 회전은 표현할 수 없다. ​ 사실 유니티 공부를 할 때는 여기까지만..