목록전체 글 (303)
군침이 싹 도는 코딩

# 언리얼에서 인터페이스란 쉽게 말해서 서로 무관한 클래스가 동일한 함수를 구현하기 위해서 사용한다 예를 들어 Character A, Character B 가 같은 방향키를 사용해 다른 동작을 하게 하고싶을때말이다 그럴때 어떠한 인터페이스를 만들고 Character A, Character B 에 상속하게 한다 ( 1. 같은 인터페이스를 상속했다하여도 여전히 둘은 무관한 관계이다 ) ( 2. 인터페이스는 몇개든 상속받을수 있다 ) # 인터페이스를 상속받기 위해서는 클래스 세팅에 디테일 탭에서 Implemented Interfaces에 Add 를 눌러 만든 인터페이스를 상속 시키면 된다 # 그렇게하면 좌측 My Blueprint 탭에 인터페이스칸이 생기며 해당 인터페이스안에 있는 함수가 보인다 이것을 클릭해..

# 게임을 만들다보면 캐릭터가 모두 동일한 크기가 아닐것이다 그렇다면 각 캐릭터별로 카메라의 위치를 변경해줘야한다 가장 간단한 방법으로는 각 캐릭터별로 스프링암과 카메라를 달고 위치를 조절해주는것이다 그러나 이 방법은 캐릭터가 적을땐 괜찮지만 많아지면 해당 작업을 많이 반복해야되기 때문에 번거롭다 반복작업을 최소화 하기 위해 캐릭터에 Possess 했을때 스프링암과 카메라를 만들어주는 노드를 작성하면 된다 # 이것이 전체 노드이다 # 이 블루 프린트 작업은 Player Controller 를 상속받는 클래스에서 해야한다 자신의 프로젝트에서 사용하는 디폴트 컨트롤러에다가 구현을 하면 된다 먼저 On Possess 이벤트를 만들고 Possess 할 캐릭터의 클래스를 Cast To 노드로 캐스팅한다 그리고 그..

# 언리얼에서 블루 프린트 클래스를 생성할때 부모 클래스를 선택하라는 창이 나오게 된다 이 부모 클래스를 선택한다는건 클래스의 상속을 의미한다 클래스의 상속이라는건 상속받은 자식의 클래스는 부모 클래스의 속성과 메소드를 사용할 수 있게 된다 # 언리얼에서의 클래스 상속은 이러한 조직도를 가진다 예를 들어 캐릭터를 부모 클래스로 가지는 블루 프린트 클래스를 만들 경우 위에 Pawn, Actor, Object 클래스를 모두 상속받는다는 말이된다. 그리고 당연하게도 Pawn, Actor, Object 클래스의 모든 기능들을 사용 가능하다. # 어떠한 클래스를 상속 받았는지는 블루프린트 클래스를 열어서 우측상단을 보면 알 수 있다.

# 위 GIF는 Delay 아래 GIF 는 Retrigger Delay 차이점이 보이는가 Delay 의 경우 내가 해당 동작을 여러번 실행해도 반드시 3초만 기다린다음 다음 동작을 수행한다 Retrigger Delay 의 경우 내가 해당 동작을 실행 시킬때마다 기다리는 시간이 초기화 된다 # 딜레이를 0초로하면 이전 동작 뒤에 바로 다음 동작을 실행하게 할 수 있다 이것은 동시에 실행하는 개념이 아니며 딜레이 노드 이전 작업을 수행 후 이후 작업을 수행한다는 의미이다 하지만 딜레이 노드를 0초로 사용하는것 대신 다른 노드를 쓸 수 있다 # Delay Until Next Tick 를 사용하면 된다 물론 딜레이 노드를 0초로 사용하는것과 동작은 같다

# 캐릭터를 만들때 해당 캐릭터의 동작을 보통 캐릭터 블루프린트 클래스에 구현하게된다 캐릭터의 수가 적을때는 하나씩 구현해주어도 무방하지만 점점 늘어나게 된다면 그것은 꽤나 귀찮은 작업이 된다 따라서 이 작업을 반복하지않고 컨트롤러를 만들어서 각 캐릭터마다 기본 동작을 구현해 줄 수 있다. # 컨텐츠 브라우저에서 우클릭 > Blueprint Class > Player Controller 선택해서 이름을 적당히 지어준다 # 해당 블루 프린트 클래스에 각 캐릭터가 가져야하는 기본 동작을 구현해준다 # 컨텐츠 브라우저 우클릭 > Blueprint Class > Game Mode Base 를 클릭하고 이름을 적당히 지어준다 # 프로젝트 세팅에 들어간다 # 옆에 Maps & Modes 를 클릭하고 Default ..

# 위와 같은 1인칭 3인칭 카메라 전환을 쉽게 만들어보자 # 먼저 인풋 액션을 만들어주자 컨텐츠 브라우저에서 우클릭 > Input > Input Action 이름을 적당히 바꿔주고 안에 설정은 건드릴 필요가없다 # 그 후 인풋 매핑 컨텍스트를 만들어주자 Input > Input Mapping Context 이름은 적당히 지어준다 # Mappings 탭 옆에 플러스 버튼을 누르고 만들어 두었던 Input Action 을 넣어주고 사용하고싶은 버튼을 지정해준다음 저장한다 # 카메라 붐을 1인칭 3인칭으로 사용할것을 두개 만든다 카메라 붐을 만드는 방법은 Add 를 클릭하고 Spring Arm을 선택하면 된다 1인칭 카메라 붐의 디테일 패널에서 Target Arm Length 50으로 조절한다 이것으로 붐에..

# AI를 만들때 NavMeshBoundsVolume 이란걸 월드에 추가해주어야 AI가 이동이 가능하다 이때 반드시 월드의 땅에 이것이 닿아 있어야 하며 이것을 확인하는 방법은 P를 눌러서 초록색이 뜬다 초록색이 뜨는 공간만을 이동할 수 있다 위 사진을 보면 각 인스턴스에 초록색 바닥이 아닌 원래 바닥의 색깔이 보이는데 이것을 없애줘야한다 # 해당 인스턴스의 블루프린트 클래스에 가서 스태틱 매시를 누르고 디테일창에 navigation 이라고 검색하면 Can Ever Affect Navigation 이란 옵션이 체크 되어있다 이것을 꺼주면 된다 # 이 작업을 하는 이유는 네비 매시 바운드볼륨은 정적이기때문에 게임이 시작되면 바꿀수가없기때문에 해당작업을 해줘야한다 정확히말하자면 정적인건 아니고 바꿀수있지만 ..

1. Eletra Player Plugin 을 활성화해준다 # 플러그인을 활성화하고 재시작을 해준다 2. 폴더를 새로 만들고 원하는 비디오를 넣는다 # 필자는 픽사베이에서 아무 동영상이나 가져왔다 3. Media player 만든다 # Media > Media Player 클릭 # 미디어 텍스쳐 에셋을 내보내게 설정 # 미디어 플레이어와 텍스쳐 에셋이 생성된다 # 텍스쳐 에셋을 우클릭해서 Create Material 클릭 4. 머터리얼 설정 # 생성된 머터리얼을 눌러서 머터리얼 도메인을 유저 인터페이스로 바꿔준다 # 머터리얼 도메인을 유저 인터페이스로 변경하면 노드의 연결이 끊어지는데 다시 이어주고 저장해준다 5. Widget Blueprint 만들기 # User Interface > Widget Blu..