摄像头跟踪算法
问题描述:
我正在制作一款游戏,我正在寻找一些基本摄像头跟踪算法的帮助。摄像头跟踪算法
- 说我们有其中有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)
我的代码可能有点过(只有在房间的一侧),但在概念上你是检查是否被修改相机位置的偏移量(基于摄像头的宽度或高度)大于或小于由偏移修改的房间位置(基于房间宽度或高度)。
我发现有两张索引卡片,像相机一样移动一张卡片有助于将您试图编码的边界条件概念化。
谢谢,但你是什么意思y camera.width? –
在这种情况下,您的相机宽度是屏幕宽度。 (320) – Needsnaming
其实,我明白你的意思,但这有点困难。如果玩家在显示“外部”的区域产卵,该怎么办? –