摄像头跟踪算法

问题描述:

我正在制作一款游戏,我正在寻找一些基本摄像头跟踪算法的帮助。摄像头跟踪算法

  • 说我们有其中有320 480
  • 大小的窗口我们也有 与坐标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 

我宁愿让玩家*屏幕和移动的背景,每当我做一个2D游戏。这可以让你做到:如果我的房间面积>或<我的屏幕尺寸,然后移动我的屏幕,使其侧面等于我的屏幕尺寸。

但是,如果你有一个摄像头,并倾向于使用该方法: 数学应该很容易。 喜欢的东西:

//assuming origin is the center of the object 
if (camera.xPosition - (camera.width/2) < room.x - (room.width/2)) 
    camera.xPosition = room.x - (room.width/2) + (camera.width/2) 

我的代码可能有点过(只有在房间的一侧),但在概念上你是检查是否被修改相机位置的偏移量(基于摄像头的宽度或高度)大于或小于由偏移修改的房间位置(基于房间宽度或高度)。

我发现有两张索引卡片,像相机一样移动一张卡片有助于将您试图编码的边界条件概念化。

+0

谢谢,但你是什么意思y camera.width? –

+0

在这种情况下,您的相机宽度是屏幕宽度。 (320) – Needsnaming

+0

其实,我明白你的意思,但这有点困难。如果玩家在显示“外部”的区域产卵,该怎么办? –