상세 컨텐츠

본문 제목

pond 프로젝트 06

Unreal Engine 4/Project

by hwano 2015. 4. 2. 16:20

본문

튜토를 따라하려고 해도 똑같은 결과가 안나오니 따라할수가 없다...

그래서 그냥 내 프로젝트 진행하려함. 튜토 5분보고 따라함. 뭔가 다름 or 에러

원인 찾기 위해 1~2시간 허비.  이 과정이 반복되고 있음..

 

없는 시간 쪼개가 맨땅에 헤딩식으로 진행하려니 진짜 죽을 맛

 

 

 

 

튜토 이어가기

 

튜토를 따라하려고 해도 똑같은 결과가 안나오니 따라할수가 없다...

그래서 그냥 내 프로젝트 진행하려함. 튜토 5분보고 따라해서 뭔가 결과가 다르거나 or 에러

원인 찾기 위해 1~2시간 허비.  이 과정이 반복되고 있음..

 

없는 시간 쪼개가 맨땅에 헤딩식으로 진행하려니 진짜 죽을 맛

 

 

 

 

 

 

큐브들부터 움직이도록

 

다시 또 원점이다.

지금 하려고 하는건 물고기들을 움직이게 하고 싶고,  아직 물고기들 내부의 캐릭터애니메이션까지

갈 수는 없으니 간단한 큐브들로 대체하여 큐브 지들이 알아서 랜덤하게 돌아다니는 정도까지

구현하려고 한다.

 

어떻게 해야할까. 비슷한 튜토들들 찾고 있다.

 

이건 e키를 누르면 돼지들이 하늘에서 랜덤하게 떨어지고 r키를 누르면 떨어진 돼지들이 폭발하는

튜토인거 같다.

https://www.youtube.com/watch?v=9-7SmkasS_A

 

이건 random location에 spawing하는 법을 질문한 페이지

https://answers.unrealengine.com/questions/27044/need-help-with-spawning-multiple-actors-at-random.html

 

이건 기본적인 spawning에 관한 튜토(한글자막이라능)

https://www.youtube.com/watch?v=8ew12FLgaMs

 

위에 튜토들을 한번 훑어 볼까.( 튜토만 몇번째 훑는거야..)

 

 

 

 

 

Spawning Physics Actors 강좌

 

 

https://www.youtube.com/watch?v=8ew12FLgaMs

이건 떨어질 물체를 블루프린트로 만들고 targetActor였나 (마야의 null같은..)

그걸로 위치를 잡는다.

레벨 블루프린트로 가서 spawnActor from blueprint 노드를 이용하여 target으로 받아온

위치에서 떨어질 물체를 생성한다.

 

 

 

 

 

 

 

Fun whith blueprints : spawning Dynamic Objects 강좌

 

 

https://www.youtube.com/watch?v=9-7SmkasS_A

다른 유투브 강좌를 봐보자. 돼지 떨어지는 튜토다. 나도 마야에서 적당한 오브젝트 하나

가져와서 비슷하게 따라해봐야겠다.  이번엔 제발 이상없이 따라할 수 있었으면 좋겠다.

 

튜토에서 바닥에 떨어질 dynamicCow 액터를 만드는데 constructionScript를 이용한다.

construction(건설) script와 event graph의 차이

 

컨스트럭션 스크립트는 오브젝트의 생성과 더불어 어떠한 방식으로든 업데이트 될 때마다

실행되도록 디자인 되어있다. 즉 이동, 회전, 스케일이 조절되거나 프로퍼티가 조절 될때마다

컨스트러션 스크립트가 재발동 된다는 뜻이다.

 

이는 게임의 실행전에 적용된다는 뜻이다. 예를 들어 어떠한 오브젝트의 컬러를 변경할 수 있는

설정을 construction script와 event graph 두가지로 만들어보자.

컨스트럭션 스크립트는 수치를 변경하면 화면에 바로 적용되지만 이벤트 그래프는

게임을 실행하거나 컴파일을 해야한다.( 맞나 모르겄네)

 

constructionScript에서 cow가 여러개 생길경우 랜덤한 색을 갖도록 매터리얼을 작성하려고하는데

여기에 컨스터럭션 스크립트를 쓰는거 같다.

 

-------------

 

따라해보니 잘된다.

적용해본 결과물들. 위 망아지 액터들을 만들거나 이동시키거나 어떠한 변화를 주면 매터리얼의 색이

바뀌게 된다. 돌맹이의 모양새와 크기 매터리얼들을 이런식으로 랜덤화 시켜놓으면 바닥에 까는순간

다 다른 돌맹이 들로 바뀌게 될것이다.

구성방식은 이렇다. 망아지 메쉬를 열어보면

 

세가지 재질이 들어가 있는데 맥스의 meterial id처럼 재질이 들어간 부분이

element라는 이름들로 나뉘어져 있다.

 

이 망아지 액터에 적용할 재질 세개를 만든다. 하나를 만들어서 3개로 복사해 element 0,1,2에 차례로

넣었다. 그 재질의 구성은

왼쪽의 3vector노드를 parameter화 시켜서 "base color"라는 이름을 달아 주었다.

이제 이 base color라는 파라미터는 외부에서 접근이 가능하다.

망아지 액터로 가서 컨스트럭션 스크립트에 아래와 같이 구성하였다.

구성이 어렵지 않다. 이걸 따라해보니 물고기들이 랜덤하게 생성되는 방법이 이제서야 대충 감이오네.

 

 

 

 

---------

이제 액터들이 쏟아져 나올( 튜토에서는 cow들이 내 프로젝트에서는 fishCube들 ) 위치를 설정해야하는데

이것도 블루프린트로 작성한다. ( 블루프린트의 활용영역이 내가 생각한것보다 훨씬 넓다)

이름은 spawnVolume으로 설정(블루프린트 클래스는 액터로 설정).

여기서의 spawn은 BP클래스의 spawn이 아니라 생성하다라는 의미의 spawn이다.

 

생각해보니 단순히 쏟아져 나올 위치(volume)를 설정한다는 개념이 아니라

actor들을 이용하여 이들을 뿜는 개체(클래스)라는 식으로 개념을 이해해야 할거 같다.

 

마야 파이썬책 강좌에 있던 lotation이 어느 특정 구역으로 들어오면 위 아래로 흔들어준다.의 역할을

했던 클래스 같은 그런 느낌같은 느낌?..   뭐 아무튼

 

---------

 

강좌를 따라했더니 오잉

된다ㅠ ㅋㅋ  강좌를 따라해서 제대로 된게 처음인듯

 

근데 그림자의 계단 현상이 너무 심하다 이것좀 해결하고 가자.

또 1시간 뒤져봤는데 못찾겠다.. 옵션들이 어디있는거야 ㅅㅂ ㅁ;ㅣㄴㅇ러미;ㄴ허;ㅣ

 

 

하다하다 안되서 그냥 바닥 static mesh를 지우고 처음터 다시 임포트해왔다.

그랬더니 그림자가 깔끔해 졌다. 이 프로그램 왜 안되지 싶을때 다 지우고 다시하면 될때가

있다. 버그냐고 젠장할 알수가 없잖아.

 

바닥은 static mesh니까 다시 라이트 리빌드 하고 그림자를 수정했지만 버튼을 누르면 spawn되서 나타나는

망아지들은 아직도 그림자 상태가 안좋다. 이거 어떻게 해야되냐....

 

 

 

-----------------------------

 

쏟아진 인형들을 지우는 프로세스는

 

cartoonActor에서

destroy this cartoon 이라는 custom event를 만든다. 이벤트가 실행되면 spawn actor from class

노드를 통해 particle BP를 만들어내고 destroy actor를 하도록 한다.

 

particle BP에서

event begin play를 하면 delay 후 destroy actor를 하도록 한다.

( 그럼 얘는 custom event후 자동으로 지워지겠지 )

 

spawn volume에서

destroyKey 설정한 키를 누르면 custom event가 시작되도록 설정한다.

 

이런식의 구조다.

 

 

---------------------------------------------------------------------------------

 

 

이제 fishCube를 어떻게 움질일지 한번 생각해보자.  음...  fishCube들을 연못공간에

어떻게 뿌릴지만 알겠다.ㅜ.. 생각해보니 behavior tree를 아직 공부안했구나.. 

간단히 한다면 fishCube에 projectile movement 컴포넌트를 붙여서 이동하게끔

하고 마우스를 클릭하면 위치를 받아 모여들게는 할 수 있을거 같다..  하지만

복잡해지면  결국 behavior tree로 제어해야 할거 같으니

BT를 사용하는 법을 정확히 알고 싶다.

 

 

 

이 강좌 한번 훑어 보자

https://www.youtube.com/watch?v=-KDazrBx6IY

 

 

 

 

 

 

Basic AI Navigation 강좌

 

 

매뉴얼에 보면 BT는 개발중인 기능이라고 되어있다.  이 강좌를 보면

레벨블루프린트를 가지고 AI 캐릭터를 제어하는거 같은데 BT없이는 원래 그런식으로 하는거 같다.

 

이 강좌에서는 인간 캐릭터를 하나 복사해서 레벨블루프린트로 simple move to 노드와 연결해 주니까

알아서 지가 걸어가는데 나는 fishCube에 어떠한 설정도 아직 안들어 있어서 그런지

애가 움직이질 않는다..  또 안됨..

 

 

 

 

 

 

 

관련글 더보기