那些java沙盘游戏是如何跟踪这么多粒子的?

那些java沙盘游戏是如何跟踪这么多粒子的?,java,particles,Java,Particles,有人能解释一下这样一个程序是如何构造的吗 他们会使用什么java类来跟踪这么多粒子,然后对照它们检查碰撞检测之类的事情?粒子需要知道它们旁边是什么粒子,或者它们不是任何东西的旁边,这样它们才能下落等等 例如,如果你不确定什么是沙盘游戏。主要是数组 由两个坐标表示的活跃运动颗粒的一维阵列(如果你想要重力加速度,可能还有一个速度) 代表世界固定部分的二维布尔(或颜色)数组 最简单的物理模型是在颗粒静止后移除颗粒(例如,填充下方、下方到左侧和下方到右侧的世界位置):而是填充相应的世界坐标。这使得计

有人能解释一下这样一个程序是如何构造的吗

他们会使用什么java类来跟踪这么多粒子,然后对照它们检查碰撞检测之类的事情?粒子需要知道它们旁边是什么粒子,或者它们不是任何东西的旁边,这样它们才能下落等等

例如,如果你不确定什么是沙盘游戏。

主要是数组

  • 由两个坐标表示的活跃运动颗粒的一维阵列(如果你想要重力加速度,可能还有一个速度)
  • 代表世界固定部分的二维布尔(或颜色)数组
最简单的物理模型是在颗粒静止后移除颗粒(例如,填充下方、下方到左侧和下方到右侧的世界位置):而是填充相应的世界坐标。这使得计算易于管理。如果世界坐标的左下方或右下方是自由坐标,则允许颗粒向下移动。运动颗粒之间的颗粒碰撞可以忽略,而不会失去太多的逼真性


(我不太明白这些天我们要节省多少CPU电源!)

这个简单的版本可以在一个轻松的周五晚上实现(就像我刚才做的那样)。只需使用代表字段的2D数组(字节、整数等)编写一个程序。在每个勾选中,迭代所有元素并进行检查:

  • 如果下面的字段(数组[x][y+1])为空,则向下移动1点(=将[x][y]设置为空,[x][y+1]设置为已占用)
  • 否则,如果[x-1][y+1]为空,则转到那里
  • 否则,如果[x+1][y+1]为空,则转到那里
这是最基本的。接下来,您必须添加检查,例如不“重复”晶粒的计算(在新位置设置一个标志,在接下来的迭代中检查)


我遵循了教程,它很好,不太长,但仍然指出了常见的陷阱和诸如此类的东西。

您是否查看了此线程?你链接到的网站有一个开发论坛。逼真可能是现存最好的词。谢谢你的回答。@Pontus我自己做了一个在HTML5画布上制作沙盘游戏的实验。我查找这个问题是因为我想知道是否有更有效的方法来实现它,因为我所做的实现比地狱还要慢。奇怪的是,javascript强大到可以在3D环境中零延迟跟踪1200多个对象,但在一个实验性的落沙应用程序中,200个对象会让它屈服。这是我的实验。你会注意到每个粒子都有一个数组,还有一个“地面”粒子数组。你可以通过自下而上迭代2D数组来避免重复检查,对吗?@KartikChugh是的,除非你还有一种自下而上的材质,比如气体或烟雾粒子。