본문 바로가기

코딩 일기

(170)
Unity 프로젝트 및 공부 11일차 사운드 매니저 (+싱글톤) 공부 및 사용 1. 싱글턴화 시키기 : 씬을 이동할 때, 이전 씬에 있던 모든 객체들이 파괴되기에 씬이동이 이뤄지더라 하더라도 파괴가 일어나지 않게하기 위함. 2. 가장 먼저 실행되는 호출 ① Awake() : 객체 생성시 최초 실행, 비활성화 활성화 관계 없음 ② Start() : 매번 활성화되면 실행, 비활성화→활성화 될때 마다 실행, 코루틴 실행 가능 ③ OnEnable() : 매번 활성화 되면 실행, 비활성화→활성화 될때 마다 실행, 코루틴 실행 불가 3. DontDestroyOnLoad() : 씬이 넘어갔을 때 기존의 오브젝트가 사라지게 되는데, 같은 객체를 다시 생성해준다해도 정보는 사라지게 된다. Scene이 변경되도 계속 남아있게 하고싶다면 위 함수를 사용하면 된..
Quaternion : 하나의 벡터와(x, y, z)와 하나의 스칼라(w, roll을 표현)를 의미한다. → (x, y, z, w) 벡터가 위치(Position)임과 동시에 방향(Directionˇ)이면, 쿼터니안은 방향(Orientationˇ)임과 동시에 회전(Rotation)이다. Directoin : 두 점을 이용해 나타낼 수 있는 방향. ~로 향하는 움직임 Orientation : 세가지 오일러 각 또는 쿼터니안을 이용해 나타낼 수 있는 방향. ~를 향하고 있는 상태 유니티는 오일러 각을 이용해 회전을 직관적으로 조작할 수 있도록 인스펙터 뷰에 표시하고있다. 하지만 내부적으로는 쿼터니안 방식으로 변환하여 회전을 계산한다. 따라서 사용자가 예외적으로 오일러 각을 계산해서 이용하도록 설정하지 않는 이상 유니티에서 짐벌락..
Unity 프로젝트 및 공부 10일차 애니메이터 상속 공부 및 사용 근접무기 도끼, 곡괭이 추가 바위 채굴 1. 애니메이터 상속 : 새로운 Animator를 생성할 때, Animator Controller가 아닌 Animator Override Controller로 생성한다. 그 후 부모 애니메이터의 애니메이션에 맞춰 자식 애니메이션을 넣어준다. 그러면 부모 애니메이터에 대한 내용(파라키터, 상태전이)을 오버라이드해서 그대로 사용하기 때문에 똑같은 과정을 두번 쓰지 않아도 된다. 2. Rigidbody - Drag, Angular Drag : Drag, Angular drag에 대한 부가설명 추가 Rigidbody : Rigidbody Class 객체 -컴포넌트 세부 속성 Mass 질량. 무게단위가 아닌 상대적인 의미의 질량이다. Drag ..
Character Controller : 캐릭터를 쉽게 움직이는데 사용하는 컴포넌트. Rigidbody 물리가 많이 사용되지 않는 캐릭터의 이동 처리 경우에 주로 사용. Rigidbody와 Collider 컴포넌트를 조합해서 만드는 것보다 여러 가지 편리한 기능을 제공한다. 코드처리에 자신이 있는 경우 Rigidbody를 이용한 물리처리 이동보다 캐릭터의 컨트롤러를 사용하는 것이 더 사용하기 편할 수 있다. 프로퍼티 기능 Slope 해당 오브젝트가 올라갈 수 있는 기울기를 제한 Step Offset 표시된 값보다 낮은 위치에 있을 경우에만 계단을 오름 Skin Width 블로킹 처리시 충돌체 모양보다 얼만큼 더 밀어 낼지 결정하는 것 값이 커질수록 지터(Jitter)가 줄어든다. 지터(Jitter) : 덜덜 떨다. 조금씩 움직이다. 값이 너..
Unity 프로젝트 및 공부 9일차 어제의 문제점 고치기 근접무기 클래스 나누기 1. 좌표가 이상하다면 해당 오브젝트의 Transform값을 인스펙터창에서 먼저 확인해보자. 2. abstract : 추상 코루틴 : 현재 이 함수는 필요하지만 내(부모 클래스)가 만들지는 않을것이니 자식 클래스에서 완성시켜라 필요한 기능이지만 내용이 각기 다를 때 상속받은 자식클래스에서 완성시키도록 하게 만듦 == 미완성 protected abstract IEnumerator IncompleCoroutine(); 미완성인 함수가 있기 때문에 클래스 자체도 미완성인 클래스가 되버린다. 미완성인 클래스임을 알려주기 위해 클래스 앞에도 abstract가 붙어야 한다. public abstract class IncompleClass : MonoBehaviour 미완..
Unity 프로젝트 및 공부 8일차 무기교체 후 플레이어 상황에 따른 애니메이션 처리 무기 흔들기 1. 무기 흔들림에 있어 Y값이 이상하게 움직이는 문제 발생 : 디버그로 확인해 보아도 Y값은 X값과 같이 잘 변하는데 Y쪽은 마우스가 위아래 움직여도 계속 위로만 이동 됨. Mathf.Clamp(a, -b, b) : a를 -b~b까지로 제한을 둔다. Mathf.Lerp(a, b, c) : a를 b까지 c만큼의 비율로 이동한다. 위치 값 x = Mathf.Clamp(Mathf.Lerp(currentPos.x, -mouseX, smoothX), -limitX, limitX) : 위치 값 x = 현재X좌표가 마우스x좌표와 (-가 붙었기에)반대로 smoothX의 비율만큼 이동하며 -limit ~ limit 사이값까지라는 제한을 주었다. 위의 마우스..
기술면접 4 1. Malloc과 New의 차이 : Malloc은 라이브러리가 제공하는 함수이기에 C,C++ 둘다 사용가능하지만, New는 C++언어에서 제공하는 기본적인 연산자 이기에 C++에서만 사용가능합니다. Malloc 함수는 메모리 할당만 해주는 함수이기에 생성자가 자동호출 되지 않는 반면에, New 함수는 자동으로 생성자가 호출이 됩니다. 2. 오버로딩과 오버라이딩의 차이 : 오버라이딩은 부모클래스에 선언된 함수와 (이름, 리턴값, 매개변수가) 같은 함수를 자식클래스에서 재정의 하는 것이고, 오버로딩은 함수의 이름만 같고 사용목적에 따라 매개변수를 다르게 사용하는 것입니다. 3. 스마트 포인터란? : 사용이 끝난 메모리를 자동으로 해제해 주어 메모리 관리를 편하게 할 수 있도록 도와주는 포인터입니다. 4. ..
Unity 프로젝트 및 공부 7일차 무기교체 1. static을 많이 사용할 수 록 메모리가 낭비된다. 2. [RequireComponent(typeof( ))] : 인스펙터 창에 [SerializeField]로 된 GunController를 한번 넣으면 뺄 수 없게 만든다. [RequireComponent(typeiof(Gameobject))] public class ClassA : MonoBehavior { //인스펙터 창에 게임오브젝트를 가져다 넣으면 뺄 수 없음 [SerializeField] private Gameobject gameobject; //인스펙터 창에 트랜스폼을 가져다 넣어도 뺄 수 있음 [SerializeField] private Transform transform; } 3. Dictionary : 인스펙터창에서 오브..