뭔가를 비교하며 if를 쓸때는 bCanMove처럼 변수를 생성하거나 함수로 빼서 정리한 다음에 그걸 비교하는게 나중을 위해서라도 좋다.
상속관계에서는 부모에 virtual을 사용하여 자식에서 override해서 조건을 바꿔 사용할 수 있다.
bool bRun = Input.GetButtonDown("Run"); //함수에 들어갈 조건들도 변수로 빼서 사용하는것이 정리하기에 좋다.
자세한 애니메이션 설명
본과 스켈레톤의 차이
메쉬 : 덩어리(관절과 뼈를 합친 ‘팔’을 생각하면 된다.)
스킨드 매쉬 : 뼈를 연결하는 ‘관절’을 생각하면 된다.
스켈레톤 : 뼈
(스킨드 메쉬에서) 뼈와 뼈를 연결하는 관절 : 본
키 프레임 애니메이션
매 프레임의 변화량을 기록해두는 애니메이션
애니메이션
Motion의 root Transform은 루트모션을 사용할때 가져올 Transform의 정보를 가지고있는 오브젝트를 의미한다.
이게 없으면 칼을 45도로 휘두를때 정면이 휘두르는 방향으로 돌아가는 것을 방지한다.
‘루트 모션’이 없으면 콜라이더가 현재 위치에 가만히 있고 애니메이션을 따라 오지 않는 것을 방지한다.
이상한 자세로 바닥으로 떨어지면 애니메이션에 문제가 있는 것이다.
검 프리펩
컴포넌트에 Nomal Map : 거칠기 텍스처 표현
생성한 프리펩에 마우스 우클릭 → Export packge 하면 프리펩에 관련된 파일들만 선택되어서 패키지로 뺄 수 있다.
무기관리
추상으로 작성한다.
플레이어 스크립트에 공격이나 여러가지를 만들어서 덩어리가 큰데 여기에 무기관리 기능도 넣으면 너무 덩어리가 커진다.
분리시키기 위해 무기관리 기능을 ‘컴포넌트’로 만들어서 플레이어에 끼워넣는다.
인터페이스는 여기에 쓰지 않는다.
파셜 클래스도 결국 덩어리가 커지는 것이다.
매니저(싱글톤)도 나쁘지 않은데 컴포넌트로 만드는게 더 좋다,.
Weapon - Abstract
Sword
GreatSword
Fist
…
웨폰 컴포넌트(지금은 매니저로 작셩했다)에 프리펩을 넣어서 저장한다.
모노비헤비어를 상속받았지만 기능들만 쓸것이니 컴포넌트로 만들어서 컴포넌트 개념으로 뺸 다음 이것을 플레이어한테 붙이고 다른곳에도 붙일 수 있다.
컴포넌트 란?
프로그래밍의 역사 (매우 중요)
절차지향(함수중심) → 정보공학(구조체중심) → 소프트웨어 위기 발생 → 해결하기 위해 객체지향(클래스, 또는 인터페이스 중심) → 중복되는것을 따로 빼기 위해CBD(컴포넌트(기능별) 중심) → 기능이 너무 많아지면 정신없어지니 따로 관점별로 묶어서 만들어진 AOP (관정 지향 - 도메인공학)