Appearance
AvatarVelocityControllerクラス
a3.AvatarVelocityControllerは、キーボードでアバター (キャラクター)を操作するコントローラーです。キー操作は AvatarPositionControllerクラスと 同じです。
- W/A/S/D — 前後左右に移動します。
- ←→ 矢印キー — 左右に回転します。
- Space — ジャンプします。
こちらはsetLinearVelocity()で速度を指定する方式のため、 周囲の剛体と物理的に相互作用できる(箱を押せる・押される)のが 特徴です。DynamicCharacterモードの アバターと組み合わせて使います。接地判定は AvatarPositionControllerより不正確なので、安定した接地判定が 必要な場合はそちらを使ってください。
js
view.setController(new a3.AvatarVelocityController(player));生成オプション
第2引数でオプションを指定できます。
speed— 移動速度(m/秒)。デフォルトは5.0。angSpeed— 回転速度(ラジアン/フレーム)。デフォルトは0.3。jumpSpeed— ジャンプ速度(m/秒)。デフォルトは15.0。
サンプル
DynamicCharacterモードのロボットをW/A/S/Dキーで動かすサンプル です。赤い箱(dynamicな剛体)を押せることを確認してください (キーが効かないときは一度3D表示部分をクリックしてください)。
js
import * as a3 from 'a3js';
await a3.initPhysics();
const view = new a3.Window(600,300);
const ground = await new a3.GLTF('/a3js/assets/grass-ground2.glb').ready;
ground.setMode('SimplePhysics',{meshCollider:'tri_mesh',rigidBody:'fixed'});
view.scene.add(ground);
const player = await new a3.GLTF('/a3js/assets/RobotExpressive.glb').ready;
player.setScale(0.5,0.5,0.5);
player.setMode('DynamicCharacter');
player.setPosition(0,2,0);
// 速度に応じてアクションを自動切り替え(このモデルのアクション名に合わせる)
player.haltActionName = 'Idle';
player.walkActionName = 'Walking';
player.runActionName = 'Running';
player.setState('Idle');
player.setAutoAction(true);
view.scene.add(player);
// W/A/S/Dで移動、←→で回転、Spaceでジャンプ
// (キーが効かないときは一度3D表示部分をクリック)
view.setController(new a3.AvatarVelocityController(player));
view.camera.setMode('Follow',{target:player,lookFrom:{x:0,y:2,z:-4}});
// ぶつかると押せる箱(dynamic)
const box = new a3.Box('red');
box.setMode('SimplePhysics');
box.setPositionNow(0,1,3);
view.scene.add(box);詳細はAPIドキュメントを 参照してください。