Skip to content

Smoothモード

setPosition()setRotation()setScale()で指定した値へ、 なめらかに補間しながら変化するモードです。毎フレームの計算を 自分で書かなくても、目標の値を指定するだけでアニメーションに なります。

js
obj.setMode('Smooth',{duration: 1.0});
  • duration — 移動にかける時間(秒)。デフォルトは1.0

以下は2秒ごとに位置・回転・拡大率の目標値を切り替えるサンプル です。値が一瞬で変わるのではなく、約1秒かけてなめらかに変化する ことを確認してください。

js
import * as a3 from 'a3js';

const view = new a3.Window(600,300);
const obj = new a3.Box("blue");
obj.setMode('Smooth');
view.scene.add(obj);

// 2秒ごとに位置・回転・拡大率を切り替える。
// Smoothモードなので約1秒かけてなめらかに変化する。
let i = 0;
while (true) {
  if (i%2 === 0) {
    obj.setPosition(1,0,0);
    obj.setRotation(0,90,0);
    obj.setScale(2,2,2);
  } else {
    obj.setPosition(-1,0,0);
    obj.setRotation(0,-90,0);
    obj.setScale(0.5,0.5,0.5);
  }
  i++;
  await a3.asyncSleep(2000);
}

Smoothモードでは移動から速度が計算されるので、 向きとアクションの自動制御setAutoDirection()/setAutoAction())も使えます。 ネットワーク越しに他のプレイヤーの位置が時々送られてくるような アプリで、キャラクターをなめらかに動かすのにも便利です。