私はゲームを作っていますが、基本的なカメラ追跡アルゴリズムの助けを探しています。
- 320x480のサイズのウィンドウがあるとします。
- 座標がx、yのプレーヤーもあります。
- ユーザーは矢印キーを使用してプレーヤーを移動できます。
- カメラはプレーヤーの座標に従います。[カメラの座標は画面がある場所です]。したがって、camera.x=player.xおよびcamera.y=player.y
今私が得ている問題は、プレイヤーが部屋の端に到達すると、部屋の「外」を見ることができるということです。したがって、理想的には、カメラが部屋の端に近づいたときにカメラの動きを停止する必要があります。
この問題に効率的に取り組む方法がわかりません。これはゲームの一般的な機能のようです。どんな助けでも素晴らしいでしょう。
私のコード、それは機能しません..本当に、ビューはランダムに奇抜になります*:
#bi_currentwindow.layout.x = -(top left x corner of window)
#bi_currentwindow.layout.y = -(top left y corner of window)
#bi_bg_size= total room (or world) size
diff=(object.x-Window.size[0]/2)
if diff<0:
bi_currentwindow.layout.x = object.x+diff
else:
diff=(object.x+Window.size[0]/2)-bi_bg_size[0]
if diff<0:
bi_currentwindow.layout.x = -object.x+Window.size[0]/2.0
diff=(object.y-Window.size[1]/2)
if diff<0:
bi_currentwindow.layout.y = diff+Window.size[1]/2
else:
bi_bg_size=centralVarTransfer.bi_bg_size
diff=bi_bg_size[1]-(object.y+Window.size[1]/2)
if diff>0:
bi_currentwindow.layout.y = -object.y+Window.size[1]/2.0