エリア判定
AccessoryPermission(Scriptable Item)
└ OverlapCollider(Overlap Detector Shape)
const posout = new Vector3(0, 0, -15); // 退出先位置情報
const accarr = ["アクセサリーID", "アクセサリーID", "アクセサリーID"]; // 滞在可能なアバターID
$.onUpdate(deltaTime => {
if (!$.state.initialized) {
$.state.initialized = true;
$.state.overlapPlayers = [];
$.state.time = 0.0;
}
let previousOverlapPlayers = $.state.overlapPlayers;
let currentOverlapPlayers = [];
let overlaps = $.getOverlaps();
overlaps.forEach(overlap => {
$.state.playerHandle = overlap.handle;
if ($.state.playerHandle == null) return;
currentOverlapPlayers.push($.state.playerHandle.id);
//if (previousOverlapPlayers.includes($.state.playerHandle.id)) return;
let myaccarr = $.state.playerHandle.getAccessoryProductIds();
let judge = false;
for(let i = 0; i < accarr.length; i++){
for(let j = 0; j < myaccarr.length; j++){
if (myaccarr[j] === accarr[i]) {
judge = true;
}
}
}
if(!judge){
$.state.playerHandle.setPosition(posout);
}
});
$.state.overlapPlayers = currentOverlapPlayers;
});
退出先位置情報にワールドゲートを仕込めば、ワールドからはじき出すことも可。