カメラのさらなる活用
クリックしてフォーカスし、 スペース
キーでズームインとズームアウトを行い、 左矢印
キーと 右矢印
キーで左右のカメラに切り替えます
基本カメラチュートリアルでは、カメラエンティティの作成とシーンへの追加方法が説明されています。単一の静的カメラの場合、スクリプトは必要ありません。ただし、より動的でインタラクティブなカメラやより高度な使用法の場合は、Scriptコンポーネントをアタッチして、カメラの動作をプログラムすることができます。
属性の変更
ランタイム中にカメラを変更する最初の方法は、Cameraコンポーネントの属性値を変更することです。これは、任意のコンポーネントの属性を設定する方法と同じ方法で行います。つまり、ComponentSystemの set()
および get()
メソッドを使用します。
var Zoom = pc.createScript('zoom');
// initialize code called once per entity
Zoom.prototype.initialize = function() {
this.targetFov = 45;
};
// update code called every frame
Zoom.prototype.update = function(dt) {
if (this.app.keyboard.wasPressed(pc.KEY_SPACE) ) {
if (this.targetFov == 10) {
this.targetFov = 45;
} else {
this.targetFov = 10;
}
}
var fov = this.entity.camera.fov;
if (fov < this.targetFov) {
fov += (10 * dt);
if (fov > this.targetFov) {
fov = this.targetFov;
}
}
if (fov > this.targetFov) {
fov -= (10 * dt);
if (fov < this.targetFov) {
fov = this.targetFov;
}
}
this.entity.camera.fov = fov;
};
このサンプルでは、スペースバーを押すと、視野角が変わります。 var fov = this.entity.camera.fov
で、このスクリプトがアタッチされているエンティティのCameraコンポーネントから fov
の値を get()
します。
this.app.keyboard.wasPressed()
でキー操作を検出し、ターゲットfovの値を切り替えます。
最後の2つのネストされた if(){}
構造で、ズームイン/ズームアウト効果を作成するために、徐々にfovの値を変更します。
this.entity.camera.fov = fov
で、新しい値で set()
fovカメラ属性を設定します。
ズームアウトしている場合、上部と下部のキューブが画面の端に配置されていることに注意してください。これは、PlayCanvasエディタのシーンでの期待に合致しています。そこでは、キューブはカメラのフラスタムの上部と下部に配置されています。