11일차: 마천륜에서 학습한 Unity 객체의 이름 지정 및 애니메이션 적용

이 글은 어드벤트 달력'[VCD] 테마파크 만들어.의 11일째 기사다.

이번 내용


이번에 나는 이전에 제작한 마천륜을 돌면서 다음과 같은 내용을 배우고 싶다.
• Unity를 통한 객체 번호 매기기 방법
• 번호 지정 객체를 가져오는 방법

유닛에서 관람차 만들기.


애니메이션 생성


먼저 이전에 제작된 마천륜에 회전 애니메이션을 설치한다.상세한 절차는 이전에 투고한 아래의 문장을 참조하시오
7일째: 회전목마에서 애니메이션 버튼 작동법 배우기
하지만 이런 상태라면 아래 그림처럼 샹들리에로 회전해 자주 밖으로 나간다.

따라서 봉미선이 회전하지 않도록 조정할 필요가 있다.
여러 가지 방법이 있지만 이번에는 애니메이션을 통해 봉미선을 반대로 돌려 회전을 없애고 아래처럼 입구가 아래로 내려간다.

객체 복사


애니메이션 제작이 완료되면 제작된 봉황꼬리배를 복제한다.
우선 복제해 제작한 봉미선을 배치한다.
특별히 새로운 일일 수도 있지만 봉황꼬리배를 원형으로 배치하면 아래의 절차에 따라 하면 비교적 수월할 것이다.
 1. 스페이스 휠의 중앙에 배치할 빈 객체를 작성합니다.
 2. 빈 대상에 봉황선 띄우기
 3. 빈 대상을 만들고 싶은 바구니를 복제하는 몇 분.
 4. 복사된 빈 객체를 각도 회전을 조금씩 증가시킵니다.(이때 봉미선은 밖으로 나갔다.)
 5. 빈 대상에서 바구니를 꺼내 마천륜 회전 대상의 모형 아래에 놓다
 6. 각도를 0으로 만들기 위해 봉미선을 모두 선택하십시오. (이렇게 하면 아래로 내려갑니다.)
다음은 완성된 그림입니다.

객체 정렬


대상자는 복제됐지만 지금쯤 봉미선 이름은 똑같을 거예요.
그러나 이렇게 하면 애니메이션이 실행될 때 처리 중인 대상을 구분할 수 없고 정상적으로 가져올 수 없습니다.(첫 번째만 획득할 수 있습니다.)
그래서 우리는 봉미선에 팻말을 달았다.
이번 수량은 하나하나 수동으로 조작해도 되지만 수량이 많으면 번거롭기 때문에 유니티의 확장 기능을 사용합니다.
종류가 많은 것 같은데 이번엔 EzRename을 쓰겠습니다.
예전에는 자산상점에서 넣을 수 있었는데 지금은 안 될 것 같아요.아래에서 다운로드할 수 있습니다.
https://github.com/betodeoliveira/ez-rename
위의 확장을 추가한 후 마우스 오른쪽 버튼을 클릭하면 Ez Rename 항목이 추가됩니다.여기서 EzRename에 대한 설정을 표시할 수 있습니다.
즉시 봉미선을 선택하고 오른쪽 단추를 눌러서 EzeRename > Open Window를 선택하십시오.다음 창이 나타납니다.

이번에는'곤도라1','곤도라2'...라는 형식으로 만들기 위해 다음과 같은 설정을 변경했다.
• NewName의 "Gondola"삽입
• Enumerate 검사
• InitialNumber에서 1 설정
마지막으로 Hierarchy를 누르면 이름이 다음과 같이 변경됩니다.

이제 Unity 설정이 종료됩니다.

코드 생성


다음은 V cast 및 편집기 작업입니다.
※ 이번엔 코드를 간소화하기 위해 동기화를 고려하지 않습니다.
이번에 만든 코드는 다른 사람과 동기화할 수 없으니 양해해 주십시오.
제작된 코드는 다음과 같습니다.
봉미선의 부분은 봉미선의 대상을 연호로 활용하여'Gondola1'에서 각각 하나를 얻어 애니메이션을 실행한다.
객체가 없으면 재생을 끝내기 위해 루프를 종료합니다.
잘못 쓰면 무한 순환이 되니 주의하세요.
--観覧車・ゴンドラ共通の再生設定の作成
local wheelSetting = json.serialize( { wrap_mode="loop",speed=0.5} )
--観覧差者全体の回転
animeObj2._ALL_PlayWithState("WheelRotate1", wheelSetting)

---------------
---ゴンドラを逆回転させる処理
---------------
local no = 1
-- 内部でループ抜ける処理が走るまでずっとループ
while(true) do
  --ゴンドラオブジェクト取得
  local wheel =  vci.assets.GetTransform("Gondola_"..no)
  --オブジェクトが取得できればアニメーション再生
  if wheel then
    local animeObj =  wheel.GetAnimation()
    animeObj._ALL_PlayWithState("GondolaRotate", wheelSetting)
  --なかったらループから抜ける
  else
    break
  end
  no = no + 1
end
그리고 동작을 확인하면 완성!빙빙 돌았어!

끝맺다


어때요?
코드 제작 부분도 썼지만 이 코드는 다른 사람과 동기화 상태가 좋지 않다.
동기화를 위해서는 조금 복잡한 설정이 필요하기 때문에 이 주소와 분리해서 기사를 쓰고 싶습니다.쓴 다음에 쓰세요.
다음에는 스쿠터를 돌리고 싶어요.

좋은 웹페이지 즐겨찾기