2012-04-27 45 views
1

私のゲームはプラットフォームゲームです。左から右に移動して、Xピクセル離れた位置から移動するようにしてください。パイゲームで動きのようなカメラを作る方法はどうですか?

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

プレイヤーが中心からXピクセル離れたところに到達したときは、私は推測します。プレーヤーの動きを止めて地形を反対の方向に動かすと、カメラの動きのように動く地形の錯覚が表示されます。

私はこれについてのコードはまだありませんが、私はこれにどのように接近するのかは分かりません。これを始める方法に関するちょっとしたアイデアが評価されます。

+1

カメラがプレーヤーの中央に配置されるようにするか、プレーヤーが周囲に移動したときにプレーヤーがプッシュするボックスの中央に配置することを意味しますか? – Darthfett

答えて

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 
0

あなただけの画面をスクロールすることになっているすべてのものに追加されxscrollと呼ばれるものを作ることができます。次に、センターから一定の距離に達すると、プレーヤーを自分の位置に追加するのではなく、xscrollから移動速度を加算または減算します。これはあなたのキャラクターが動く同じスピードですべてが非常にスムーズに戻るようにします。私はこれを私のゲームのすべてで使用しており、私はそれに問題がなかった。

ラスタースクロール:の

関連する問題