12일째: 돌루스에서 학습 대상의 생성과 삭제(전편)

이 기사는 Advent 캘린더 "[VCD] 테마파크 만들어."입니다.라고 12일째 보도한 바 있다.

이번 내용


이번에는 갑작스런 손실을 보면서 학습 대상의 생성과 삭제를 했다.
2~2일~3일로 나눠 설명한다.이번 학습은 다음과 같다.
• VCD에서의 생성 및 삭제 개념
• 대상을 생성하는 방법

VCD에서 생성 및 삭제


V 캐스트에서는 단순히 코드에서 객체를 생성하거나 삭제할 수 없습니다.따라서 생성, 삭제할 때 서로 다른 디스플레이, 숨기기 처리를 하여 재현을 시뮬레이션할 수 있다.
숨기는 방법으로는 투명, 치수 0으로 만들기, 보이지 않게 멀리 두기 등이 있다.
이번에는'멀리 두면 보이지 않는다'는 방법으로 만들겠다.
구체적으로 아래 규칙에 따라 제작하다
・ 숨겨진 객체는 -500 위치에 y 좌표를 배치합니다.
·y 좌표는 -100 이상이면 나타나고 -100 이하면 숨겨집니다.
(경계치가 -100이면 깊은 뜻이 없다. 0~500이면 어디든 좋다.)
・버튼을 누르면 숨겨진 상태의 실수가 발생합니다.모두 상태가 나타나면 콘솔에 메시지를 보냅니다.
・ 돌루스를 먹으면 손에서 사라져 숨은 상태로 돌아간다.(이것은 내일 만든 몫이다)

Unity 설정


먼저 출현 대상의 돌실을 만들어 복제한다.이번에는 여섯 개다.
(돌루스가 휴대할 수 있도록 SubItme 어셈블리가 함께 제작됩니다.)
이 편차는 처음에 숨기려고 하기 때문에 y 좌표를 -500으로 설정합니다.
다음은 갑작스런 손실이 발생하는 버튼과 출현점을 설정합니다.
다음 그림과 같이 빈 객체를 표시할 위치에 배치하는 것이 중요합니다.
(출현 위치도 코드 계산으로 결정할 수 있지만 나는 이것이 더욱 직관적이고 알기 쉽다고 생각한다.)

Unity의 설정은 위에 있습니다.

코드 생성


다음은 V cast 및 편집기 작업입니다.
※ 이 코드는 여러 사람이 사용할 경우에만 올바르게 동작할 수 없습니다.
다음 기사에 대안 방법을 쓰려고 하니 같이 읽어주세요.
갑작스런 손실이 발생했을 때 발생하는 갑작스런 손실이 아니라 상태를 표시하지 않는 것을 취해야 한다.
따라서 먼저 돌궐의 좌표를 검사하여 대상의 돌궐을 찾는 함수를 생성한다.
대상의 갑작스런 실수가 없을 때 nil (비어 있음) 로 돌아갑니다.
--出現対象とするチュロスを探す。
function fetchChurros()
  --出現対象となるチュロス。はじめはnilを入れておく。
  local targetChurros = nil

  -- チュロスオブジェクトが取得できなくなるまでずっとループ
  local no = 1
  while(true) do
    --チュロスオブジェクト取得
    local churros =  vci.assets.GetTransform("Churros_"..no)
    if churros then
      --取得したオブジェクトのY座標が-100以下ならそれをターゲットに定めループを抜ける。
      if churros.GetPosition().y < -100 then
        targetChurros =  churros
        break
      end
    else
      --オブジェクトが取得できなくなったらループを抜ける
      break
    end
    no = no + 1
  end
  --取得したチュロスを返す。なければnilの状態のままなのでnilが返る。
  return targetChurros
end
이어서 단추를 눌렀을 때 상기 함수를 호출하여 대상 분실 처리를 만듭니다.
---[SubItemの所有権&Use状態]アイテムをグラッブしてグリップボタンを押すと呼ばれる。
---@param use string @押されたアイテムのSubItem名
function onUse(use)
  --今回作成したボタン「Button_Appear_Churros」が押されたときのみ実行される
  if use == "Button_Appear_Churros" then
    local churros = fetchChurros()
    if churros then
      --対象のオブジェクトを出現ポイントの位置に移動させる
      local appearPoint = vci.assets.GetTransform("Churros_AppearPoint")
      churros.SetPosition(appearPoint.GetPosition())
      churros.SetRotation(appearPoint.GetRotation())
    else
      --対象となるチュロスがなかった場合
      print("チュロスは完売しました。")
    end
  end
end
코드 제작 완료.
아래 그림에서 보듯이 갑작스런 손실이 있을 경우 갑작스런 손실이 발생하고 없을 경우 컨트롤러에 메시지를 보냅니다.
(이해하기 어렵지만 큐브 버튼을 몇 번 눌렀다)

끝맺다


어때요?
이번에 제작된 코드는 아직 완전히 대응하지 않았기 때문에 내일 이번 코드의 문제점과 해결 방안에 대한 설명, 대상이 사라진 처리를 배울 예정이다.

좋은 웹페이지 즐겨찾기