1

私のゲームはプラットフォーム ゲームです。プレーヤーが中心から X ピクセル離れたときに左または右に移動するようにします。

pygameにはカメラを動かすものがないことを理解しています。

プレーヤーが中心から X ピクセル離れたポイントに到達したら、プレーヤーの動きを停止し、地形を反対方向に移動させて、カメラの動きのように動作する可動地形の錯覚を表示します。

4

3 に答える 3

0

カメラをプレイヤーの中心に配置するための非常に基本的な方法は、プレイヤーが常にカメラの中心にくるように、描画するものすべてをオフセットすることです。私自身のゲームでは、関数を使用して座標を変換します。

def to_pygame_coords(coords):
    # move the coordinates so that 0, 0 is the player's position
    # then move the origin to the center of the window
    return coords - player.position.center + window.position.center

これを拡張してプレーヤーに絶対に配置しないようにするには、代わりにウィンドウをボックスの中央に配置します。次に、ボックスの中心を更新して、プレーヤーがボックスを離れた場合に、ボックスがプレーヤーと一緒に移動するようにします (したがって、カメラが移動します)。

疑似コード (負の座標についてはテストされていません):

BOX_WIDTH = 320
BOX_HEIGHT = 240
box_origin = player.position.center
def update_box(player_coords):
    if player_coords.x - box_origin.x > BOX_WIDTH:
        box_origin.x = player_coords.x - BOX_WIDTH
    elif box_origin.x - player_coords.x > BOX_WIDTH:
        box_origin.x = player_coords.x + BOX_WIDTH
    if player_coords.y - box_origin.y > BOX_HEIGHT:
        box_origin.y = player_coords.y - BOX_HEIGHT
    elif box_origin.y - player_coords.y > BOX_HEIGHT:
        box_origin.y = player_coords.y + BOX_HEIGHT

def to_pygame_coords(coords):
    # move the coordinates so that 0, 0 is the box's position
    # then move the origin to the center of the window
    return coords - box_origin + window.position.center
于 2012-04-27T00:08:24.183 に答える
0

画面を横切ってスクロールすることになっているすべてのものに追加される xscroll と呼ばれるものを作ることができます。次に、中心から一定の距離に到達したら、プレイヤーの移動速度をその位置に追加する代わりに、xscroll から移動速度を加算または減算します。これにより、キャラクターが移動するのと同じ速度ですべてが非常にスムーズに戻ります。私はこれをすべてのゲームで使用していますが、問題が発生したことはありません。

于 2012-06-27T23:18:21.427 に答える
0

視覚化:

視差スクロール: http://blog.shinylittlething.com/wp-content/uploads/2009/08/parallax.png (通常、距離を表示するために、異なる速度でスクロールする複数のレイヤーがあります。)

2D タイルマップのスクロール: http://mikecann.co.uk/wp-content/uploads/2011/11/tm.png

紙に座標を描く / これらの画像は問題を視覚化するのに役立ちます。

于 2012-06-29T18:29:13.037 に答える