14일째: 돌루스에서 학습 대상의 생성과 삭제(후편): 삭제
10507 단어 가상 배우VirtualCastVCI
이번 내용
이번에도 지난번과 마찬가지로 밀로스를 만들면서 다음과 같은 내용을 배운다.
・bone와의 충돌 탐지
객체 삭제
소유권에 대한 대응
충돌 판정을 받은 onTriger Enter on Collision Enter
이번에는 돌로즈를 먹으면 사라지는 행위를 실현해야 한다.
'먹었다'를 어떻게 판단하는지에 관해서는 사람의 머리에 헤드라는 born이 있기 때문에 그 born이 초콜스의 균형기에 부딪히면'먹었다'로 판정된다.
onTriger Enter Enter onCollision Enter를 사용하여 객체 충돌을 가져옵니다.
자세한 내용은 아래 공식 페이지를 보십시오.
・이벤트 함수
그리고 예전에 본과 충돌 판정 시 호출된 함수에 대한 기사를 썼는데 보십시오.
・Trigger 및 Kinematic 정보
onTrigger Enter onCollision Enter는 첫 번째 매개변수와 객체 SubItem 이름, 두 번째 매개변수가 충돌한 후의 이름을 가질 수 있습니다.
첫 번째 매개변수는 SubItem의 하위 객체이며 두 번째 매개변수는 균형기가 실제로 설정된 객체 이름입니다.
Unity 설정
이 같은 맥락에서 돌로즈가 헤드본에 닿으면 사라지는 처리가 이뤄진다.코드를 만들기 전에 Unity에서 설정을 변경합니다.수정점은 다음 세 가지입니다.
충돌 판정을 받은 onTriger Enter on Collision Enter
이번에는 돌로즈를 먹으면 사라지는 행위를 실현해야 한다.
'먹었다'를 어떻게 판단하는지에 관해서는 사람의 머리에 헤드라는 born이 있기 때문에 그 born이 초콜스의 균형기에 부딪히면'먹었다'로 판정된다.
onTriger Enter Enter onCollision Enter를 사용하여 객체 충돌을 가져옵니다.
자세한 내용은 아래 공식 페이지를 보십시오.
・이벤트 함수
그리고 예전에 본과 충돌 판정 시 호출된 함수에 대한 기사를 썼는데 보십시오.
・Trigger 및 Kinematic 정보
onTrigger Enter onCollision Enter는 첫 번째 매개변수와 객체 SubItem 이름, 두 번째 매개변수가 충돌한 후의 이름을 가질 수 있습니다.
첫 번째 매개변수는 SubItem의 하위 객체이며 두 번째 매개변수는 균형기가 실제로 설정된 객체 이름입니다.
Unity 설정
이 같은 맥락에서 돌로즈가 헤드본에 닿으면 사라지는 처리가 이뤄진다.코드를 만들기 전에 Unity에서 설정을 변경합니다.수정점은 다음 세 가지입니다.
이제 Unity 설정이 종료됩니다.
코드 생성
공식 페이지를 참고하여 구상한 처리를 다음과 같이 직접 조합한다.
function onTriggerEnter(item,hit)
--名前にChurrosを含むSubItemがHeadボーンにあたったら
if string.find( item, "Churros_" ) and hit=="Head" then
local churros = vci.assets.GetTransform(item)
-- 削除(y座標-500に移動)
churros.SetPosition(Vector3.__new(0,-500,0))
end
end
하지만 위 코드로 잡아먹으면 손에서 사라지지 않는다.VCD가 잡고 이동할 때도 잡고 있다는 판정이 남아있기 때문에 이동 전 위치로 되돌려놓는다.
위와 같은 문제를 해결하기 위해'승선보스를 만났을 때 보이지 않는다'→'손을 놓을 때 -500으로 이동'2단계로 변경해 처리한다.
보이지 않는 수단
• 재료를 투명하게 하다
• 보이지 않을 정도로 사이즈 축소
잠깐만요.
이번에는 후자의 방법으로 대응한다.
우선bon에 맞았을 때의 코드는 다음과 같이 수정한다
function onTriggerEnter(item,hit)
--名前にChurrosを含むSubItemがHeadボーンにあたったら
if string.find( item, "Churros_" ) and hit=="Head" then
local churros = vci.assets.GetTransform(item)
-- [追加部分]サイズを1/1000にする
churros.SetLocalScale(Vector3.one*0.001)
-- 削除(y座標-500に移動)
churros.SetPosition(Vector3.__new(0,-500,0))
end
end
치수를 0으로 설정하면 잘못된 동작이 있을 수 있으므로 0이 아닌 작은 값으로 설정합니다.못 잡은 상태에서 먹을 때도 있기 때문에 -500으로 이동하는 전선은 그대로 두고 있다.
방출을 만들 때 - 500 처리로 이동합니다.
---[not SubItemの所有権&Grab状態]アイテムをUngrabしたときに呼ばれる。
---@param target string @UngrabされたSubItem名
function onUngrab(target)
if string.find( target, "Churros_" ) then
local churros = vci.assets.GetTransform(target)
-- 放した際にチュロスのサイズが0.5以下になってたら
if churros and churros.GetLocalScale().y < 0.5 then
local churros = vci.assets.GetTransform(target)
churros.SetPosition(Vector3.__new(0,-500,0))
end
end
end
0.5라는 수치는 매우 적합하다.1/1000~1의 수치면 뭐든지 될 것 같아요.마지막으로 처리 부분에 되돌아오는 코드를 추가하면 완성됩니다
function AppearChurros(sender, name, churrosName)
local churros = vci.assets.GetTransform(churrosName)
-- オブジェクトが取得できていて、かつ所有権を持っている場合のみ処理実行
if churros then
if churros.IsMine then
--対象のオブジェクトを出現ポイントの位置に移動させる
local appearPoint = vci.assets.GetTransform("Churros_AppearPoint")
churros.SetPosition(appearPoint.GetPosition())
churros.SetRotation(appearPoint.GetRotation())
--[追加部分]サイズを1にする
churros.SetLocalScale(Vector3.one)
end
end
end
vci.message.On("appearChurros", AppearChurros)
이상 대응 종료.이렇게 하면 아래처럼 잡을 때와 안 잡을 때 다 먹을 수 있어요.끝맺다
어때요?
이번에는 한 입에 사라지기 위해 했는데 신경 쓰면 두 입, 세 입이면 사라지는 걸 만들 수 있을 것 같아.
다음 내용은 미정이다.
Reference
이 문제에 관하여(14일째: 돌루스에서 학습 대상의 생성과 삭제(후편): 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lightjug/items/421ffc0c5e0e8669eb41
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(14일째: 돌루스에서 학습 대상의 생성과 삭제(후편): 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lightjug/items/421ffc0c5e0e8669eb41텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)