我正在制作游戏,我正在寻找一些基本的相机跟踪算法的帮助。
现在我遇到的问题是:当玩家到达房间的尽头时, 我可以看到房间的“外面”。因此理想情况下,相机应该在接近房间的尽头时停止移动。
我不确定如何有效地解决这个问题,这似乎是游戏中的常见功能。任何帮助都会很棒。
我的代码,它不起作用..真的,视图随机变得古怪*:
#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
答案 0 :(得分:1)
每当我进行2D游戏时,我更喜欢制作播放器中心屏幕并移动背景。这允许你这样做:如果我的房间是>或者&lt;我的屏幕尺寸,然后移动我的屏幕,使其侧面等于我的屏幕尺寸。
但如果您有相机并且更喜欢使用该方法: 数学应该很容易。 类似的东西:
//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)
我的代码可能有点偏离(仅适用于房间的一侧),但从概念上讲,您正在检查您的相机位置是否被偏移(基于相机宽度或高度)修改为大于或小于房间位置由偏移量修改(基于房间宽度或高度)。
我发现有2个索引卡并且像相机一样移动一个索引卡有助于概念化您尝试编码的边界条件。