将 vector3 从补丁发送到脚本不起作用
Sending a vector3 to script from patches is not working
所以我用 cannon.js 在 spark AR 中制作了一个球弹跳。一切正常,直到我想通过补丁编辑器从 facetracker 获取前额的位置到脚本。
错误:
Error:Exception in HostFunction: valueOf() called on a Signal. This probably means that you are
trying to perform an arithmetic operation on a signal like +, -, *, etc. Use functions .add, .sub(),
etc on the signal instead or .subscribeWithSnapshot() on an EventSource to get the signal's current value on a callback.
at ScalarSignal::valueOf (native)
{
"line": 4841,
"column": 19,
"sourceURL": "cannon.js"
}
My patches将额头的vector3发送到脚本。
这段代码出现错误:
var pos = Patches.getVectorValue('HeadPos');
groundBody.position.set(pos);
遗憾的是,我在网上找不到任何有关将补丁中的 vector3 发送到脚本中的 'Working' 值的信息,有人知道如何将 vector3 值发送到脚本并将其用作值?
我在使用 cannon.js 时找到了一个解决方案。 cannon.js 具有一种更新功能,因此您可以使用 .pinLastValue() 因为它会在每一帧执行此操作以更新物理特性。
我的代码:
// Create time interval loop for cannon
Time.setInterval(function (time) {
if (lastTime !== undefined) {
let dt = (time - lastTime) / 1000;
world.step(fixedTimeStep, dt, maxSubSteps)
// Get the head position values from the patches
var headVal1 = Patches.getScalarValue("HeadPosX").pinLastValue();
var headVal2 = Patches.getScalarValue("HeadPosY").pinLastValue();
var headVal3 = Patches.getScalarValue("HeadPosZ").pinLastValue();
// Set the position of the head hitbox to the headposition in the physics world
HeadBody.position.x = headVal1;
HeadBody.position.y = headVal2;
HeadBody.position.z = headVal3;
}
lastTime = time
}, timeInterval);
此代码分别从我发送这些值的补丁中分别获取 x、y 和 z 值。我也可以从两侧将其作为 Vector3 完成,但我认为这看起来更好,并且可以更轻松地通过补丁单独编辑值,而不是再次将其打包为 Vector3。
所以我用 cannon.js 在 spark AR 中制作了一个球弹跳。一切正常,直到我想通过补丁编辑器从 facetracker 获取前额的位置到脚本。
错误:
Error:Exception in HostFunction: valueOf() called on a Signal. This probably means that you are
trying to perform an arithmetic operation on a signal like +, -, *, etc. Use functions .add, .sub(),
etc on the signal instead or .subscribeWithSnapshot() on an EventSource to get the signal's current value on a callback.
at ScalarSignal::valueOf (native)
{
"line": 4841,
"column": 19,
"sourceURL": "cannon.js"
}
My patches将额头的vector3发送到脚本。
这段代码出现错误:
var pos = Patches.getVectorValue('HeadPos');
groundBody.position.set(pos);
遗憾的是,我在网上找不到任何有关将补丁中的 vector3 发送到脚本中的 'Working' 值的信息,有人知道如何将 vector3 值发送到脚本并将其用作值?
我在使用 cannon.js 时找到了一个解决方案。 cannon.js 具有一种更新功能,因此您可以使用 .pinLastValue() 因为它会在每一帧执行此操作以更新物理特性。
我的代码:
// Create time interval loop for cannon
Time.setInterval(function (time) {
if (lastTime !== undefined) {
let dt = (time - lastTime) / 1000;
world.step(fixedTimeStep, dt, maxSubSteps)
// Get the head position values from the patches
var headVal1 = Patches.getScalarValue("HeadPosX").pinLastValue();
var headVal2 = Patches.getScalarValue("HeadPosY").pinLastValue();
var headVal3 = Patches.getScalarValue("HeadPosZ").pinLastValue();
// Set the position of the head hitbox to the headposition in the physics world
HeadBody.position.x = headVal1;
HeadBody.position.y = headVal2;
HeadBody.position.z = headVal3;
}
lastTime = time
}, timeInterval);
此代码分别从我发送这些值的补丁中分别获取 x、y 和 z 值。我也可以从两侧将其作为 Vector3 完成,但我认为这看起来更好,并且可以更轻松地通过补丁单独编辑值,而不是再次将其打包为 Vector3。