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

複数のカメラ

複数のカメラが存在する場合、ワールド内で最初に見つかったアクティブなカメラが使用されます。