PDCA 회전

개시하다


이 글은 VCI Advent Calendar 2019 첫날의 글이다.

돌리다



던지다



PDCA는 버리는 거예요.

견본


PDCP - 프로젝트 정보 확인 - THE SEED ONLINE(α)

방법


제작에 필요한 애플리케이션(특히 Unity) 가져오기에 대해서는 이쪽을 확인하십시오.
Virtual Cast Wiki: VCC 최초 제작
대충 가 보다.

1. VCOIObject 제작


Hierarchy를 마우스 오른쪽 버튼으로 클릭합니다.
VCI > PlainVCI
를 입력합니다.
다음 그림에 따라 입력하십시오.

2. VCD SubItem 제작


위에서 작성한 Hierrarchy의 VCOIObject를 마우스 오른쪽 버튼으로 클릭합니다.
Create Empty를 사용하여 GameObject를 만듭니다.

VCD SubItem의 추가, 설정


제작된 GameObject를 선택하고 이름을 변경하고 Inspector 화면에서 AddComponent를 누르십시오
검색에서
「VCI」

그런 다음 VCCI SubItem이 표시되므로 부착을 클릭하십시오.

금번
  • 회전하는 PDCA를 잡고 싶어
  • 회전하는 PDCA를 버리고 싶다
  • 회전을 늘리거나 줄이려는 PDCA
  • 이런 생각
  • Grabbable
  • Scalable
  • Uniform Scaling
  • 라고 세 가지 검사를 했다.
  • Grabbable
  • 을 잡을 수 있을까
  • Sclable을 두 손으로 잡고 크기를 바꿀 수 있을까
  • 는 Uniform Scalable X, Y, Z 비율 유지를 제한하는 확장
  • .
    VCD SubItem에 대한 자세한 내용은 다음과 같습니다.
    VCI SubItem Component

    Ridbody 설정


    VCC SubItem을 추가하면 Righidbody 구성 요소가 자동으로 추가됩니다.
    Unity Documentation:Rigidbody
    중요한 부분에서만 대강 설명하다.
    Mass 단위는 Kg
    Drag 저항.값이 낮을수록 객체가 무거워집니다.이 값이 높으면 가벼워 보여요.Drag의 일반값은 0.001(금속 블록)과 10(깃털 사이입니다.
    Anglar Drag 회전 저항
    중력의 영향을 받았는지 아닌지
    Is Kinematic 물리적 엔진의 영향 해제 여부
    Freeze Position XYZ 축의 이동을 제한할지 여부
    Freeze Rotation XYZ 축의 회전 제한 여부
    예를 들어 고양이 귀를 몸에 붙이는 VCD를 만들고 싶을 때
    Use Gravity Is Kinematic 됐어요.

    Box Collider 추가


    VCD와 같이 Box를 입력하면 Box Collider가 나오기 때문에 그걸 선택하세요.
    Box Collider2D는 선택하지 않도록 주의하십시오.

    크기는 다음을 참조하십시오.

    Box Collider의 범위는 그 SubItem을 잡을 수 있는 범위입니다.
    또한 Is Trigger 정보
    Is Trigger: 물리적 판정Is Trigger: 물리적으로 판정되지 않음그렇게 생각하면 처음부터 OK야.VCD를 설치하는 경우에는 기본적으로 검사를 하는 것이 좋습니다.

    3. 회전하는 게임Object 만들기


    지난번과 마찬가지로 빈 GameObject를 만들고 이름을 바꿉니다.
    이 GameObject 아래에 회전하는 GameObject가 설치되어 있습니다.

    4. 드로잉용 GameObject 추가


    텍스트에 흰색 배경 추가


    텍스트 뒤에 흰색 배경을 준비하려면 Hierrarchy의 Rotate PDCA를 우클릭하십시오
    3D GameObject > Plane
    Plane을 생성합니다.초기값이 워낙 크니까 스케일을 줄여주세요.

    텍스트 추가 중 하나


    Hierarchy의 RotatePDCA를 마우스 오른쪽 버튼으로 클릭합니다.
    VCI > Text
    추가합니다.
    정상적으로 동작할 수 없는 경우 다음 URL을 참조하십시오.
    VCI Text (TextMeshPro)

    제작 후 위 이미지와 같이 수치를 입력합니다.

    텍스트 추가 2


    Hierrarchy에서 시작하여 위에서 만든 Text를 복사하여 같은 곳에 붙여넣습니다.
    Rotation을 180도 회전합니다.

    5. 스크립트 추가


    이번에는 회전하는 각본을 만들어야 한다.
    복사해서 붙이면 돼요.그래도 될 것 같아서 조금만 설명해 주세요.
    전문은 아래와 같다.
    main.lua
    ---@type ExportTransform @回転させるGameObjectをGetSubItemしたもの
    local PDCARotate = vci.assets.GetSubItem("RotatePDCA")
    ---@type number @Y軸の回転角度
    local RotateY_Axis = 0
    
    ---全ユーザーで毎フレーム呼ばれる
    function updateAll()
        RotateY_Axis = RotateY_Axis + 2
        PDCARotate.SetLocalRotation(Quaternion.Euler(0,RotateY_Axis ,0))
        if RotateY_Axis == 360 then 
            RotateY_Axis = 0
        end
    end
    

    GetSubItem()


    일단 첫머리의 한마디.
    ---@type ExportTransform @回転させるGameObjectをGetSubItemしたもの
    local PDCARotate = vci.assets.GetSubItem("RotatePDCA")
    
    GetSubItem에 대한 해설은 저희에게 맡기겠습니다.
    가상 배우의 VCC 스크립트 예
    ExportTransform
    이번에는'subItem VCD'가 붙은 게임Object 이름이 아닌'subItem VCD'가 붙은 게임Object의 아이의 게임Object 이름이 기재됐다.
    예, 함수 이름은 GetSubItem이지만 SubItem이 아닌 GameObject도 GetSubItem일 수 있습니다.
    참고로 SubItem이 아닌 GameObject의 위치는 동기화할 수 없습니다. (초기 위치는 고정되어 있습니다.)
    이번 PDCA의 운행은 매우 중요하다. 모두가 같은 PDCA의 위치를 공유할 필요가 없기 때문에 회전 위치가 동기화되지 않는다.
    실제로 있어도 없죠.

    updateAll()


    업데이트All 함수에 대한 고려 사항은 약간입니다.
    ---全ユーザーで毎フレーム呼ばれる
    function updateAll()
        RotateY_Axis = RotateY_Axis + 2
        PDCARotate.SetLocalRotation(Quaternion.Euler(0,RotateY_Axis ,0))
        if RotateY_Axis == 360 then 
            RotateY_Axis = 0
        end
    end
    
    모든 사용자는 프레임이라고 불리지만, 사용자마다 초와 시작 시간이 다르다.
    이건 양쪽이 PDCA의 C를 가리키고 있는 모습입니다.

    이러한 실현에는 프레임이 서로 다른 상황에서도 문제가 없는 VCD가 필요하다.

    최후


    Export VCD 키를 누릅니다.vci 파일을 생성합니다.
    이후 더 시드 온라인에 올리면 가상 캐릭터에서 활용할 수 있다.

    좋은 웹페이지 즐겨찾기