pyxen.Camera
Cameraはレンダラーがワールド内で何を表示するかを定義します。
コンポーネントとしてエンティティにアタッチされます。レンダラーはカメラのトランスフォームとプロパティを使用して、ビュー行列とプロジェクション行列を計算します。
何かを描画するには、ワールドに少なくとも1つのカメラが必要です。
カメラの作成
camera = world.spawn(
x=0,
y=0,
camera=Camera()
)
または後から追加:
camera = world.spawn()
camera.camera = Camera()
カメラはエンティティのTransformを使用
カメラ自体は位置を保持しません — エンティティのトランスフォームを使用します:
camera.x = 100
camera.y = 50
camera.rotation = 30
camera.scale = (2, 2)
エンティティを移動するとビューが移動します。親のトランスフォームもカメラに影響します。
プロパティ
zoom
camera.camera.zoom = 1.0
型: float
デフォルト: 1.0
| 値 | 効果 |
|---|---|
1.0 | デフォルトビュー |
>1 | ズームイン |
<1 | ズームアウト |
例:
camera.camera.zoom = 2.0 # ズームイン
camera.camera.zoom = 0.5 # ズームアウト
ズームはプロジェクション行列のみに影響し、エンティティのトランスフォームには影響しません。
例:プレイヤーの追従
player = world.spawn(x=0, y=0, sprite=hero)
camera = world.spawn(camera=Camera())
def update():
camera.x = player.x
camera.y = player.y
またはもっとシンプルに、カメラの親をプレイヤーに設定:
player = world.spawn(x=0, y=0, sprite=hero)
camera = world.spawn(camera=Camera(), parent=player)
ズームアウトしたカメラ:
camera.camera.zoom = 0.75
複数のカメラ
複数のカメラが存在する場合、ワールド内で最初に見つかったアクティブなカメラが使用されます。