20일째: 손목밴드형 입장권을 가지고 공부하는 스크립트

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

이번 내용


이번엔 자동으로 아래 손목밴드형 티켓을 장착할 수 있습니다.
버튼을 누르면 나타나 손목에 자동으로 장착된다. 이번에 배운 기술은 다음과 같다. / 스크립트의 자동 설치 Unity 요약 이번에 제작된 손목밴드는 손목밴드를 착용할 수 있는 위치(손목보다 약간 팔꿈치에 기대는 위치)와 착용할 수 있는 위치가 다르다는 과제가 있다.(장착 가능한 위치는 각 축의 시작점이며, 이번에 설치하고 싶은 위치는 팔꿈치와 손목뼈의 중간에 있다.) 일반적으로 오프셋도 위치를 조정할 수 없는 것은 아니지만 이번에는 다음과 같은 설치 위치 조정용 대상을 제작하고 그 위에 설치 기능을 설치했다. 이렇게 하면 스크립트 이동 위치 조정용 대상이 설치 위치를 자유롭게 조정할 수 있어 편리하다.
또 팔찌형의 설치 VCC를 제작할 때는'~Hand(손목)'가 아닌'~LowerArm(팔꿈치)'을 착용 대상으로 삼아야 한다.
~Hand로 설정하면 다음과 같이 손목을 움직이면 손목에서 떨어진다.
Hand시 행동pic.twitter.com/uYeAc5zw8c - 머뭇거림과(@lightjug)December 26, 2020

코드 생성


VCC를 설치하는 스크립트의 쓰기 방법은 아래 공식 페이지를 보십시오br/>
/ExportTransform(페이지 아래 탑승)설치할 때 AttachToAvatar()를 사용합니다. 이 때 아이템은 설치 가능한 위치에 있어야 합니다.


이번에는 버튼을 누르면 설치할 수 있을 것 같아요.br/>
코드는 다음과 같습니다.


function onUse(use)
  if use == "Button_WristBand_Appear" then
    -- 出現対象とする腕輪を探す。関数はチュロスのときのものとほぼ作りは同じのため省略。
    local wristband   = fetchWristBand()
    -- リストバンドと同じnoの装着用子オブジェクトを取得する.
    if wristband then
      --位置調整用オブジェクトを取得
      local attachItem  = getAttachItem(wristband.GetName()) 
      --装着対象のボーンの位置を取得
      local avatar = vci.studio.GetLocalAvatar()
      local lowerArmBone = avatar.GetBoneTransform("LeftLowerArm")
      local handBone = avatar.GetBoneTransform("LeftHand")

      if lowerArmBone and handBone then
        --リストバンドをいい感じの位置(肘と手首の間の位置)に移動。
        local wristPos = lowerArmBone.position*0.4 + handBone.position*0.6
        wristband.SetPosition(wristPos)
        wristband.SetRotation(lowerArmBone.rotation)

        --装着用の子オブジェクトを肘の位置に移動
        attachItem.SetPosition(lowerArmBone.position)
        --装着させる。
        attachItem.AttachToAvatar()

      end
    end
  end
end

function getAttachItem(wristband)
  local no = string.match( wristband,"WristBand (.+)" )
  if no then
    return vci.assets.GetTransform("WristBand_Attach "..no)
  end
end

실제 운행 후 다음과 같다br/>


終わりに


어때요?

이번엔 그냥 씌웠을 뿐이야 이 손목밴드만 건드리면 움직일 수 있는 장치를 계속 만들고 싶어br/>
다음 회의 내용은 미정이다.


좋은 웹페이지 즐겨찾기