如何通过脚本修改Spark AR中对象的缩放比例?
解决Spark AR脚本修改对象缩放的问题
你的代码存在两个关键错误,导致无法生效:
- 错误调用了不存在的
toSignal方法,且Transform应为小写的transform - 仅通过
await获取一次补丁事件值,无法响应后续的事件触发
以下是两种常见场景的正确实现:
一次性触发缩放(事件触发后固定缩放比例)
const Scene = require('Scene'); const Patches = require('Patches'); const Reactive = require('Reactive'); (async function () { const object = await Scene.root.findFirst('object'); const eventSignal = Patches.outputs.getBoolean('event'); // 监听事件信号变化,触发时修改缩放 eventSignal.subscribe((isTriggered) => { if (isTriggered) { // 设置XYZ三个轴的缩放值为0 object.transform.scale = Reactive.pack3(0, 0, 0); // 等比缩放可简化为:object.transform.scale.setScalar(0); } }); })();
动态绑定缩放值(随外部信号实时变化)
如果需要让缩放比例随补丁输出的数值实时更新,比如绑定到滑块控件:
const Scene = require('Scene'); const Patches = require('Patches'); const Reactive = require('Reactive'); (async function () { const object = await Scene.root.findFirst('object'); // 从补丁获取三个轴的缩放分量信号 const scaleX = Patches.outputs.getScalar('scaleX'); const scaleY = Patches.outputs.getScalar('scaleY'); const scaleZ = Patches.outputs.getScalar('scaleZ'); // 绑定缩放信号到对象 object.transform.scale = Reactive.pack3(scaleX, scaleY, scaleZ); })();
重要细节
- 必须引入
Reactive模块,用于处理信号类型的属性赋值 - Spark AR API中对象的变换属性是小写的
transform,不是大写的Transform - 等比缩放时使用
setScalar(数值)可以快速统一设置XYZ三个轴的缩放比例
内容的提问来源于stack exchange,提问作者asdasdasd
相关产品推荐
相关产品推荐

