Pygame:以角色为中心的运动系统(暗黑破坏神II,如点击移动)

时间:2016-04-26 09:08:54

标签: python-2.7 pygame

我目前正在使用Pygame开发一款新的RPG游戏(我的目标是学习如何使用面向对象的编程)。我几天前开始开发了一个移动系统,玩家点击一个位置,然后角色精灵就到达那个位置,当它通过检查精灵是否碰撞时停在那里。用鼠标位置。

但我很快发现,这极大地限制了世界大小(到应用程序窗口大小)。

我开始研究制作一个运动系统,背景会相对于玩家移动,从而提供运动的幻觉。

我设法通过创建一个跟踪我的背景地图位置的变量来实现这一目标。地图比应用程序窗口大得多。每当我想让我的玩家移动时,我会以相反方向的玩家速度来偏移背景。

我现在的下一个问题是我不能让我的角色停止移动......因为角色精灵从未实际到达鼠标点击的最后位置,因为它是移动的背景,而不是人物精灵。

我在考虑花一些时间在一个变量中进行编码,该变量将跟踪角色精灵在移动时到达鼠标点击位置需要多少位移。由于背景以角色精灵的速度移动,因此在x和y方向上将需要尽可能多的背景位移,以使背景上的点击位置居中到屏幕中心的角色精灵。

会是这样的:

If MOUSEBUTTON clicked:
   NM = set number of moves needed to reach the clicked position based on character sprite distance to click and character sprite speed.
If NM != 0:
   Move background image
Else:
   pass

这意味着当我的背景移动到足以使角色精灵现在刚好超过玩家最初点击的背景区域时,移动将停止,因为NM == 0。

我想我的问题是:这听起来是个好主意还是处理其他精灵和碰撞运动的噩梦?在Pygame中有更好的工具来实现这个移动系统吗?

我也可以使用一个时钟来计算出动作需要多少秒。

我想最终整个挑战是处理一个固定的参考点并让一切都围绕它移动,既包括这个固定的参考,也包括它们自己的参考点。例如如果另外两个精灵朝着彼此移动,并且玩家的角色也会移动"那么其他两个精灵的运动将不得不依赖于另一个精灵的位置,也取决于运动员角色运动造成的背景偏移。

一个有趣的话题让我的大脑煎了几个晚上!

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

你实际上是在征求游戏设计的意见。我看待它的方式,没有什么是不可能的,所以继续尝试你的编码。另外,看看分散在网络周围的类似项目也是明智之举。您可以在不重新发明轮子的情况下获取大量提示。这是一个很好的起点。

scrolling mini map