【问题标题】:Pygame: Character Centered Movement System (Diablo II like click-to-move)Pygame:以角色为中心的移动系统(暗黑破坏神 II 类似点击移动)
【发布时间】:2016-04-26 09:08:53
【问题描述】:

我目前正在使用 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 中有没有更好的工具来实现这个运动系统?

我也可以使用时钟计算出运动需要多少秒。

我想最终整个挑战是处理一个固定的参考点,让一切都围绕它移动,无论是相对于这个固定的参考点,还是它们自己的参考点。例如如果另外两个精灵相互移动,并且玩家的角色也“移动”了,那么另外两个精灵的移动将必须取决于另一个精灵的位置以及由玩家角色的移动。

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

感谢您的建议!

【问题讨论】:

    标签: python-2.7 pygame


    【解决方案1】:

    您实际上是在征求对游戏设计的意见。在我看来,没有什么是不可能的,所以继续尝试你的编码。环顾一下散布在网络上的类似项目也是明智的。您也许可以在不重新发明轮子的情况下获得很多技巧。这是一个很好的起点。

    scrolling mini map

    【讨论】:

    • 谢谢你的链接,我会看看它。正如我所说,我是 Pygame 的新手,我不想花很多时间重新发明轮子。特别是因为我认为这种运动系统会被广泛使用。话虽如此,看起来大多数游戏都使用箭头键或 WASD 而不是鼠标单击。
    猜你喜欢
    • 2011-12-14
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 2018-11-03
    相关资源
    最近更新 更多