상자에서 먹는 비디오 CD를 꺼내는 방법
11029 단어 가상 배우VirtualCastVCI
개시하다
어느 정도 음식 VCD를 실현하는 방법을 알면 이해하기 쉬울 것 같아서요.
몰라. 알 수도 있어.
이번에 하고 싶은 거.
아래와 같은 것은 처음에는 상자에 넣어서 안에서 꺼내 먹을 수 있는 VCD를 만든다.이번에는 예를 들어 단풍만두를 만들자.
주요 조건은 다음과 같다.
1. 상자 안에 단풍만두가 들어 있는데, 상자가 움직이면 단풍만두도 따라서 움직인다.
2. 상자에서 홍엽만두를 한 번 꺼내면, 상자는 움직여도 움직이지 않는다.
3. 단풍만두를 먹고 손에서 사라져 상자로 돌아왔다
4. 상자를 옮길 때 단풍만두는 뒤처지지 않아 보인다
실현 중인 과제
요점은 조건 1의 상자가 움직이면 단풍만두도 함께 움직인다.
나는 이 점에 대해 자세히 고려하고 싶다.
하위 객체의 위치 동기화
단순히 함께 움직일 뿐이라면 단풍만두를 상자 속의 아이 상대로 만들면 된다.
하지만 이번에는 단풍만두를 꺼내기 위해서는 SubItem이 필요합니다.
SubItem은 VCOIObject의 바로 아래에만 놓을 수 있기 때문에 상자의 하위 대상이 될 수 없습니다
스크립트의 SubItem 위치에서 동기화
다른 SubItem과 함께 이동하는 방법으로는 스크립트를 통해 동기화하는 방법이 있습니다.같은 사람이 상자와 단풍만두의 소유권을 가지고 있다면 거의 문제없을 것이다.
하지만 실제로 꺼내 먹으면 상자에 들어가기 때문에 다 먹은 단풍만두는 먹는 사람이 소유권을 가지는 상태가 된다.
이 상태에서 같은 기간 지연이 발생하고 단풍만두는 조금 늦어지며 요구4의 외관상 뒤처지지 않지만 만족할 수 없다.
해결책
상술한 문제를 해결하기 위해 이번에는 하위 대상과 스크립트를 동기화하는 혼합 방식을 채택하였다.
상자에 설치된 아이 대상자가 잡지 못하는 단풍만두(Fake 단풍)와 일반 단풍만두(Real 단풍)와 가시 상태를 전환해 자연스러운 동작처럼 보이도록 한다.
구체적인 절차는 다음과 같다.
· 상자에 들어갈 때 페이크 단풍은 가시화되고 리얼 단풍은 가시화되지 않습니다.
·리얼 단풍과 페이크 단풍의 위치가 동기화돼 다소 지연되지만 위치는 대체로 같다.
· 페이크 단풍을 이용하려면 같은 위치의 리얼 단풍을 잡는다.
· 리얼 단풍을 잡는 순간 페이크 단풍을 비시각화·리얼 단풍을 시각화한다.
· 리얼 단풍을 먹는 순간 페이크 단풍은 시각화하고 리얼 단풍은 시각화하지 않는다.
코드
구체적인 코드는 다음과 같다.
변수, 함수의 정의 등이 상당히 사랑스럽기 때문에 분위기 속에서 읽어보세요.복사도 안 하고.
장악적 처리
function onGrab(target)
if string.find( target,NAME.MOMIJI ) then
local no = string.match( target,NAME.MOMIJI.." (.+)" )
if no then
changeFakeToReal(no)
end
end
end
function changeFakeToReal(no)
--箱から出てるフラグをONにする
vci.state.Set(STATE.IS_TAKE_OUT.." "..no,true)
--Fake用のもみじ饅頭を透過して、実物のもみじ饅頭を可視化する。
vci.assets._ALL_SetMaterialColorFromName(NAME.MOMIJI.." "..no,COLOR.SHOW)
vci.assets._ALL_SetMaterialColorFromName(NAME.FAKE.." "..no,COLOR.HIDE)
end
음식 처리
function onCollisionEnter(item, hit)
if string.find(item,NAME.MOMIJI) and hit == "Head" then
local momijiNo = string.match( item,NAME.MOMIJI.." (.+)" )
if momijiNo then
eatMomiji(momijiNo)
end
end
end
function eatMomiji(_no)
local no = tonumber(_no)
local item = ITEM.MOMIJI_LIST[no]
if item and item.IsMine then
--箱から出てるフラグをOFFにする
vci.state.Set(STATE.IS_TAKE_OUT.." "..no,false)
--Fake用のもみじ饅頭を可視化して、実物のもみじ饅頭を透過する。
vci.assets._ALL_SetMaterialColorFromName(NAME.FAKE.." "..no,COLOR.SHOW)
vci.assets._ALL_SetMaterialColorFromName(NAME.MOMIJI.." "..no,COLOR.HIDE)
vci.assets._ALL_PlayAudioFromName(AUDIO.EAT)
end
end
포지셔닝 처리
function updateAll()
for i=1,#ITEM.MOMIJI_LIST do
local item = ITEM.MOMIJI_LIST[i]
--所有権がバラバラの可能性があるため各自所有権保持者が処理する
if item.IsMine then
-- 箱から出ていなかったら
if vci.state.Get(STATE.IS_TAKE_OUT.." "..i) == false then
--- Fakeもみじの位置にRealもみじを移動する。
item.SetPosition(ITEM.FAKE_LIST[i].GetPosition())
item.SetRotation(ITEM.FAKE_LIST[i].GetRotation())
end
end
end
end
프레임당 위치를 조정할 필요가 없을 수도 있습니다.
그게 다야.
끝맺다
어때?
이번 방법은 음식 VCD 외에도 적용할 수 있을 것 같습니다.
또 VCD로 테마파크를 제작한다는 광고도 썼으니 꼭 가보세요.
[VCC] 테마파크 만들기 Advent Calendar 2020
Reference
이 문제에 관하여(상자에서 먹는 비디오 CD를 꺼내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lightjug/items/cf8b23e44c5d618b54b6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아래와 같은 것은 처음에는 상자에 넣어서 안에서 꺼내 먹을 수 있는 VCD를 만든다.이번에는 예를 들어 단풍만두를 만들자.
주요 조건은 다음과 같다.
1. 상자 안에 단풍만두가 들어 있는데, 상자가 움직이면 단풍만두도 따라서 움직인다.
2. 상자에서 홍엽만두를 한 번 꺼내면, 상자는 움직여도 움직이지 않는다.
3. 단풍만두를 먹고 손에서 사라져 상자로 돌아왔다
4. 상자를 옮길 때 단풍만두는 뒤처지지 않아 보인다
실현 중인 과제
요점은 조건 1의 상자가 움직이면 단풍만두도 함께 움직인다.
나는 이 점에 대해 자세히 고려하고 싶다.
하위 객체의 위치 동기화
단순히 함께 움직일 뿐이라면 단풍만두를 상자 속의 아이 상대로 만들면 된다.
하지만 이번에는 단풍만두를 꺼내기 위해서는 SubItem이 필요합니다.
SubItem은 VCOIObject의 바로 아래에만 놓을 수 있기 때문에 상자의 하위 대상이 될 수 없습니다
스크립트의 SubItem 위치에서 동기화
다른 SubItem과 함께 이동하는 방법으로는 스크립트를 통해 동기화하는 방법이 있습니다.같은 사람이 상자와 단풍만두의 소유권을 가지고 있다면 거의 문제없을 것이다.
하지만 실제로 꺼내 먹으면 상자에 들어가기 때문에 다 먹은 단풍만두는 먹는 사람이 소유권을 가지는 상태가 된다.
이 상태에서 같은 기간 지연이 발생하고 단풍만두는 조금 늦어지며 요구4의 외관상 뒤처지지 않지만 만족할 수 없다.
해결책
상술한 문제를 해결하기 위해 이번에는 하위 대상과 스크립트를 동기화하는 혼합 방식을 채택하였다.
상자에 설치된 아이 대상자가 잡지 못하는 단풍만두(Fake 단풍)와 일반 단풍만두(Real 단풍)와 가시 상태를 전환해 자연스러운 동작처럼 보이도록 한다.
구체적인 절차는 다음과 같다.
· 상자에 들어갈 때 페이크 단풍은 가시화되고 리얼 단풍은 가시화되지 않습니다.
·리얼 단풍과 페이크 단풍의 위치가 동기화돼 다소 지연되지만 위치는 대체로 같다.
· 페이크 단풍을 이용하려면 같은 위치의 리얼 단풍을 잡는다.
· 리얼 단풍을 잡는 순간 페이크 단풍을 비시각화·리얼 단풍을 시각화한다.
· 리얼 단풍을 먹는 순간 페이크 단풍은 시각화하고 리얼 단풍은 시각화하지 않는다.
코드
구체적인 코드는 다음과 같다.
변수, 함수의 정의 등이 상당히 사랑스럽기 때문에 분위기 속에서 읽어보세요.복사도 안 하고.
장악적 처리
function onGrab(target)
if string.find( target,NAME.MOMIJI ) then
local no = string.match( target,NAME.MOMIJI.." (.+)" )
if no then
changeFakeToReal(no)
end
end
end
function changeFakeToReal(no)
--箱から出てるフラグをONにする
vci.state.Set(STATE.IS_TAKE_OUT.." "..no,true)
--Fake用のもみじ饅頭を透過して、実物のもみじ饅頭を可視化する。
vci.assets._ALL_SetMaterialColorFromName(NAME.MOMIJI.." "..no,COLOR.SHOW)
vci.assets._ALL_SetMaterialColorFromName(NAME.FAKE.." "..no,COLOR.HIDE)
end
음식 처리
function onCollisionEnter(item, hit)
if string.find(item,NAME.MOMIJI) and hit == "Head" then
local momijiNo = string.match( item,NAME.MOMIJI.." (.+)" )
if momijiNo then
eatMomiji(momijiNo)
end
end
end
function eatMomiji(_no)
local no = tonumber(_no)
local item = ITEM.MOMIJI_LIST[no]
if item and item.IsMine then
--箱から出てるフラグをOFFにする
vci.state.Set(STATE.IS_TAKE_OUT.." "..no,false)
--Fake用のもみじ饅頭を可視化して、実物のもみじ饅頭を透過する。
vci.assets._ALL_SetMaterialColorFromName(NAME.FAKE.." "..no,COLOR.SHOW)
vci.assets._ALL_SetMaterialColorFromName(NAME.MOMIJI.." "..no,COLOR.HIDE)
vci.assets._ALL_PlayAudioFromName(AUDIO.EAT)
end
end
포지셔닝 처리
function updateAll()
for i=1,#ITEM.MOMIJI_LIST do
local item = ITEM.MOMIJI_LIST[i]
--所有権がバラバラの可能性があるため各自所有権保持者が処理する
if item.IsMine then
-- 箱から出ていなかったら
if vci.state.Get(STATE.IS_TAKE_OUT.." "..i) == false then
--- Fakeもみじの位置にRealもみじを移動する。
item.SetPosition(ITEM.FAKE_LIST[i].GetPosition())
item.SetRotation(ITEM.FAKE_LIST[i].GetRotation())
end
end
end
end
프레임당 위치를 조정할 필요가 없을 수도 있습니다.
그게 다야.
끝맺다
어때?
이번 방법은 음식 VCD 외에도 적용할 수 있을 것 같습니다.
또 VCD로 테마파크를 제작한다는 광고도 썼으니 꼭 가보세요.
[VCC] 테마파크 만들기 Advent Calendar 2020
Reference
이 문제에 관하여(상자에서 먹는 비디오 CD를 꺼내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lightjug/items/cf8b23e44c5d618b54b6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
상술한 문제를 해결하기 위해 이번에는 하위 대상과 스크립트를 동기화하는 혼합 방식을 채택하였다.
상자에 설치된 아이 대상자가 잡지 못하는 단풍만두(Fake 단풍)와 일반 단풍만두(Real 단풍)와 가시 상태를 전환해 자연스러운 동작처럼 보이도록 한다.
구체적인 절차는 다음과 같다.
· 상자에 들어갈 때 페이크 단풍은 가시화되고 리얼 단풍은 가시화되지 않습니다.
·리얼 단풍과 페이크 단풍의 위치가 동기화돼 다소 지연되지만 위치는 대체로 같다.
· 페이크 단풍을 이용하려면 같은 위치의 리얼 단풍을 잡는다.
· 리얼 단풍을 잡는 순간 페이크 단풍을 비시각화·리얼 단풍을 시각화한다.
· 리얼 단풍을 먹는 순간 페이크 단풍은 시각화하고 리얼 단풍은 시각화하지 않는다.
코드
구체적인 코드는 다음과 같다.
변수, 함수의 정의 등이 상당히 사랑스럽기 때문에 분위기 속에서 읽어보세요.복사도 안 하고.
장악적 처리
function onGrab(target)
if string.find( target,NAME.MOMIJI ) then
local no = string.match( target,NAME.MOMIJI.." (.+)" )
if no then
changeFakeToReal(no)
end
end
end
function changeFakeToReal(no)
--箱から出てるフラグをONにする
vci.state.Set(STATE.IS_TAKE_OUT.." "..no,true)
--Fake用のもみじ饅頭を透過して、実物のもみじ饅頭を可視化する。
vci.assets._ALL_SetMaterialColorFromName(NAME.MOMIJI.." "..no,COLOR.SHOW)
vci.assets._ALL_SetMaterialColorFromName(NAME.FAKE.." "..no,COLOR.HIDE)
end
음식 처리
function onCollisionEnter(item, hit)
if string.find(item,NAME.MOMIJI) and hit == "Head" then
local momijiNo = string.match( item,NAME.MOMIJI.." (.+)" )
if momijiNo then
eatMomiji(momijiNo)
end
end
end
function eatMomiji(_no)
local no = tonumber(_no)
local item = ITEM.MOMIJI_LIST[no]
if item and item.IsMine then
--箱から出てるフラグをOFFにする
vci.state.Set(STATE.IS_TAKE_OUT.." "..no,false)
--Fake用のもみじ饅頭を可視化して、実物のもみじ饅頭を透過する。
vci.assets._ALL_SetMaterialColorFromName(NAME.FAKE.." "..no,COLOR.SHOW)
vci.assets._ALL_SetMaterialColorFromName(NAME.MOMIJI.." "..no,COLOR.HIDE)
vci.assets._ALL_PlayAudioFromName(AUDIO.EAT)
end
end
포지셔닝 처리
function updateAll()
for i=1,#ITEM.MOMIJI_LIST do
local item = ITEM.MOMIJI_LIST[i]
--所有権がバラバラの可能性があるため各自所有権保持者が処理する
if item.IsMine then
-- 箱から出ていなかったら
if vci.state.Get(STATE.IS_TAKE_OUT.." "..i) == false then
--- Fakeもみじの位置にRealもみじを移動する。
item.SetPosition(ITEM.FAKE_LIST[i].GetPosition())
item.SetRotation(ITEM.FAKE_LIST[i].GetRotation())
end
end
end
end
프레임당 위치를 조정할 필요가 없을 수도 있습니다.
그게 다야.
끝맺다
어때?
이번 방법은 음식 VCD 외에도 적용할 수 있을 것 같습니다.
또 VCD로 테마파크를 제작한다는 광고도 썼으니 꼭 가보세요.
[VCC] 테마파크 만들기 Advent Calendar 2020
Reference
이 문제에 관하여(상자에서 먹는 비디오 CD를 꺼내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lightjug/items/cf8b23e44c5d618b54b6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function onGrab(target)
if string.find( target,NAME.MOMIJI ) then
local no = string.match( target,NAME.MOMIJI.." (.+)" )
if no then
changeFakeToReal(no)
end
end
end
function changeFakeToReal(no)
--箱から出てるフラグをONにする
vci.state.Set(STATE.IS_TAKE_OUT.." "..no,true)
--Fake用のもみじ饅頭を透過して、実物のもみじ饅頭を可視化する。
vci.assets._ALL_SetMaterialColorFromName(NAME.MOMIJI.." "..no,COLOR.SHOW)
vci.assets._ALL_SetMaterialColorFromName(NAME.FAKE.." "..no,COLOR.HIDE)
end
function onCollisionEnter(item, hit)
if string.find(item,NAME.MOMIJI) and hit == "Head" then
local momijiNo = string.match( item,NAME.MOMIJI.." (.+)" )
if momijiNo then
eatMomiji(momijiNo)
end
end
end
function eatMomiji(_no)
local no = tonumber(_no)
local item = ITEM.MOMIJI_LIST[no]
if item and item.IsMine then
--箱から出てるフラグをOFFにする
vci.state.Set(STATE.IS_TAKE_OUT.." "..no,false)
--Fake用のもみじ饅頭を可視化して、実物のもみじ饅頭を透過する。
vci.assets._ALL_SetMaterialColorFromName(NAME.FAKE.." "..no,COLOR.SHOW)
vci.assets._ALL_SetMaterialColorFromName(NAME.MOMIJI.." "..no,COLOR.HIDE)
vci.assets._ALL_PlayAudioFromName(AUDIO.EAT)
end
end
function updateAll()
for i=1,#ITEM.MOMIJI_LIST do
local item = ITEM.MOMIJI_LIST[i]
--所有権がバラバラの可能性があるため各自所有権保持者が処理する
if item.IsMine then
-- 箱から出ていなかったら
if vci.state.Get(STATE.IS_TAKE_OUT.." "..i) == false then
--- Fakeもみじの位置にRealもみじを移動する。
item.SetPosition(ITEM.FAKE_LIST[i].GetPosition())
item.SetRotation(ITEM.FAKE_LIST[i].GetRotation())
end
end
end
end
어때?
이번 방법은 음식 VCD 외에도 적용할 수 있을 것 같습니다.
또 VCD로 테마파크를 제작한다는 광고도 썼으니 꼭 가보세요.
[VCC] 테마파크 만들기 Advent Calendar 2020
Reference
이 문제에 관하여(상자에서 먹는 비디오 CD를 꺼내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lightjug/items/cf8b23e44c5d618b54b6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)