[英]How to rotate an object by genericTweenValue in Lens Studio
我有一個對象,每次點擊屏幕時我都想在 y 軸上旋轉 90 度,並且我想使用 tween 管理器中使用 genericTweenValue 的緩動功能。 在下面的代碼中,我嘗試這樣做,但角度似乎是錯誤的。
預期結果:每次點擊時,對象都會旋轉 90 度角。 實際結果:在每次點擊時進行多次旋轉,而不是 90 度。
global.turn = function() {
var updateEvent = script.createEvent("UpdateEvent");
var transform = object.getTransform();
var rotation = transform.getLocalRotation();
tweenManager.setStartValue(object, "y_rot_", rotation.y);
tweenManager.setEndValue(object, "y_rot_", rotation.y + 90);
updateEvent.bind(function(eventData) {
var rotY = tweenManager.getGenericTweenValue(object, "y_rot_");
var rotationToApply = quat.angleAxis(rotY, vec3.up());
var oldRotation = object.getTransform().getLocalRotation();
var newRotation = rotationToApply.multiply(oldRotation);
transform.setLocalRotation(newRotation);
});
tweenManager.startTween(object, "y_rot_", function() {
script.removeEvent(updateEvent);
});
}
var touchEvent = script.createEvent("TapEvent");
touchEvent.bind(function(eventData) {global.turn()});
我通過將rotationToApply.multiply(rotation)
放在transform.setLocalRotation
global.turn = function() {
var updateEvent = script.createEvent("UpdateEvent");
var transform = object.getTransform();
var rotation = transform.getLocalRotation();
tweenManager.setStartValue(object, "y_rot_", rotation.y);
tweenManager.setEndValue(object, "y_rot_", rotation.y + 90);
updateEvent.bind(function(eventData) {
var rotY = tweenManager.getGenericTweenValue(object, "y_rot_");
var rotationToApply = quat.angleAxis(degToRad(rotY), vec3.up());
transform.setLocalRotation(rotationToApply.multiply(rotation));
});
tweenManager.startTween(object, "y_rot_", function() {
script.removeEvent(updateEvent);
});
}
var touchEvent = script.createEvent("TapEvent");
touchEvent.bind(function(eventData) {global.turn()});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.