カメラの移動

camera (カメラ)とは、ゲーム全体から、どの範囲をキャンバスに映し出すかを定義する機能です。デフォルトでは、カメラはキャンバスの中央に配置されています。

カメラの移動には、 xy の値を変更するか、 camera.moveTo 関数を使用します。

このコードサンプルでは、カメラはプレイヤーの x 方向への動きを、とらえ続けます。

カメラのズーム

zoom (ズーム)関数は、ワールド内のスプライトや他の要素の描画サイズの倍率を変更します。ズームを大きくするとスプライトは拡大描画(ズームイン)され、小さくするとスプライトは縮小描画(ズームアウト)されます。

zoomTo(target, speed) は、カメラのズームインとズームアウトをスムースに行うための、 async 関数です。第 2 引数を与えた場合、それは 1 フレームあたりのズーム速度の指定になります。

カメラのオン・オフ

デフォルトでは、 allSprites.draw() は p5.js の描画ループの最後に呼ばれ、そこでカメラが自動的にオンになります。しかし、スプライトやグループを描画するタイミングを手動で制御したい場合は、それらを別々に描画することができます。

このコードサンプルをご覧ください。ゲームのプレーヤーやその舞台のように、ワールドにおける座標系で指定された要素は、 camera.on() でカメラをオンにした後に描画します。

また、オレンジの四角で表現されている UI や HUD のスプライトといった、ワールドとは無関係にキャンバス上の座標で指定された要素は、 camera.off() でカメラをオフにした後に描画します。

mouse.x は、ワールドに対するマウスの x 座標を表します。ワールドがキャンバスからはみ出していても、ワールドの座標系における座標を示し続けます。一方で mouse.canvasPos.x は、純粋にキャンバス上でのマウスの x 座標を表します。

カメラにおけるマウスイベント

このコードサンプルでは、どのスプライトも移動していません! カメラが左右に動いているだけです。

大きなスプライトは、カメラがオンのときに、ワールドに対して描画されます。小さいスプライトは、カメラがオフのときに、キャンバスに対して描画されます。

sprite.mouse 関数は、カメラのオン・オフにかかわらず、動作することに注意してください。

前へ 次へ