2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[PlayCanvas]横へのリサイズ時に配置したモデルなどが隠れてしまう件について

Posted at

PlayCanvasのコンテンツを作るときですが、画面サイズやアス比が固定されていれば…
と、常々考えてしまうことがあります。

例えば、PlayCanvasのロゴをドーンとでっかく見せるコンテンツ

スクリーンショット 2020-01-08 14.55.34.png

縦へのリサイズはFill ModeをFill Windowにしているし、
スクリーンショット 2020-01-08 14.58.11.png

縦へのリサイズ時はカメラがズームアウトしてくれるので
ちゃんとコンテンツが映りますね
スクリーンショット 2020-01-08 14.55.45.png

では横はどうだろうかと…

あれま
コンテンツが隠れてしまいました。
スクリーンショット 2020-01-08 14.55.56.png

意外とこの問題にぶつかる人は多い気がします。

これを解決するには以下のスクリプトをアクティブカメラに付与してあげます。

let ResizeCameraFov = pc.createScript('resizeCameraFov');

ResizeCameraFov.prototype.initialize = function() {
    let self = this;
    let onWindowResize = function () {
        self._checkAspectRatio();
    };
    window.addEventListener('resize', onWindowResize, false);
    self._checkAspectRatio();
};

ResizeCameraFov.prototype._checkAspectRatio = function () {
    let height = this.app.graphicsDevice.height;
    let width = this.app.graphicsDevice.width;

    this.entity.camera.horizontalFov = height > width;
};

これで横にリサイズしてもコンテンツが表示されました。
スクリーンショット 2020-01-08 15.05.00.png


実はこれ、
PlayCanvasの新規プロジェクト作成時のテンプレートにある「Model Viewer Starter Kit」にある
スクリーンショット 2020-01-08 15.06.24.png
orbit-camera.jsで使われています。
スクリーンショット 2020-01-08 15.06.38.png

このorbit-camera.jsをこのまま使うことがありますが、状況に応じて使わないこともありますからリサイズは気をつけたいですね。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?