📘

cluster Game HUD v2の始め方(LT資料とその補完)

2024/07/18に公開

これは2024/7/18の「GAME PARK LT会」で発表したときのPDF資料です。
https://vins-jp.sakura.ne.jp/pdf/game_hud_v2.pdf

上記のPDFの中にあるコード

PDFでは画像になっているコードを以下に貼り付けます。
PDFと重複する内容もありますが、少しTipsも書いています。

$.onRide((isGeton, player) => {
  if (isGeton) {
    $.setPlayerScript(player);
  }
});
const findPlayer = () => {
  let players = $.getPlayersNear($.getPosition(), 0.3);
  if (players.length > 0) {
    $.state.player = players[0];
    $.setPlayerScript(players[0]);
    $.state.playerFound = true;
  }
};
_.onStart(() => {
  _.showButton(0, _.iconAsset("icon0"));
  _.showButton(1, _.iconAsset("icon1"));
  _.showButton(2, _.iconAsset("icon2"));
  _.showButton(3, _.iconAsset("icon3"));
  targetItem = _.sourceItemId;
  _.sendTo(targetItem, "isVR", _.isVr);
});
$.onReceive((messageType, arg, sender) => {
  if (messageType === "isVR") {
    $.setStateCompat("owner", "isVR", arg);
    $.setStateCompat("owner", "isNotVR", !arg);
  }
}, {
  player: true
});
_.onButton(0, (isDown) => {
	if (isDown) {
		motionNo = 0;
	}
});
_.onButton(1, (isDown) => {
	if (isDown) {
		motionNo = 1;
	}
});
const motions = [
	_.humanoidAnimation("anim0"),
	_.humanoidAnimation("anim1"),
	_.humanoidAnimation("anim2")
];
_.onFrame((deltaTime) => {
	if (motionNo >= 0) {
		motionProc(deltaTime);
	}
});
const motionProc = (deltaTime) => {

	let motion = motions[motionNo];
	let len = motion.getLength();
	motionTick += deltaTime;
	if (motionTick > len) {
		motionTick -= len;
	}
	let pose = motion.getSample(motionTick);
	_.setHumanoidPoseOnFrame(pose, 1);
};

Discussion