我的游戏是一个平台游戏。我希望播放器在距离中心X像素时移动,向左或向右移动。
我知道pyplay没有任何东西可以让相机移动。
当玩家到达离中心X像素的点时,停止玩家的移动,让地形向相反的方向移动,以显示可移动地形的幻觉,就像相机运动一样。
可视化:
视差滚动:http://blog.shinylittlething.com/wp-content/uploads/2009/08/parallax.png(通常有多个图层,以不同的速度滚动以显示距离。)
二维tilemap滚动:http://mikecann.co.uk/wp-content/uploads/2011/11/tm.png
在纸上绘制坐标/这些图像有助于将问题可视化。
你可以做一个叫做xscroll的东西,它被添加到所有应该在屏幕上滚动的东西中。然后,当你到达离中心一定的距离时,不是将你的玩家移动速度添加到他的位置,而是从xscroll中添加或减去移动速度。这使得一切都以你的角色移动的速度非常平稳地向后移动。我在所有的游戏中都使用这个,我从来没有遇到过问题。
一个非常基本的方法是让相机对中玩家,只要偏移你画的所有东西,让玩家始终在相机的中心。在我自己的游戏中,我使用一个函数来转换坐标:
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
问题内容: 问题 如何制作一个Ajax按钮(向上和向下箭头),以便数字可以增加或减少 如何将用户的操作保存到变量NumberOfVotesOfQuestionID 我不确定是否应该对变量使用数据库。但是,我知道还有一种更简单的方法可以节省投票数。 您如何解决这些问题? [编辑] 服务器端编程语言是Python。 问题答案: 这是使用jQuery / Django的肮脏/未经尝试的理论实现。 我们将
我在做一个增强现实项目。当发现图像目标时,ARCamera跟踪目标。我希望相机只移动XZ轴而不影响Y轴。
问题内容: 问题 如何制作一个Ajax按钮(向上和向下箭头),以便数字可以增加或减少 如何将用户的操作保存到变量NumberOfVotesOfQuestionID 我不确定是否应该对变量使用数据库。但是,我知道还有一种更简单的方法可以节省投票数。 您如何解决这些问题? [编辑] 服务器端编程语言是Python。 问题答案: 这是使用jQuery / Django的肮脏/未经尝试的理论实现。 我们将
我是GLM新手,正在尝试编写fps风格的相机类 移动鼠标时是否需要重新计算上方向向量? 然而,在我改变向上向量后,一切看起来都很奇怪 但是当我保持向上向量时我的程序看起来有问题 文件:FPSCAMER。cpp公司 您可以在此处下载源代码和二进制文件 https://docs.google.com/file/d/0B9givuJvSet8ekRReWtRM29ldzg/edit?usp=sharin
当有人加入语音频道时,如何制作一个标记为@角色的discord机器人?示例:@role{user}已加入
问题内容: 如何在NetBeans中为Java程序创建.exe文件? 我环顾四周,可以制作JAR文件,但不能制作exe文件。 问题答案: 看一下JAR包装器,例如Jar2Exe,JSmooth或Launch4j。 他们会将JAR包装在可执行文件中,该可执行文件将启动JVM。