那些java沙子游戏如何跟踪这么多粒子?
任何人都可以对如何构建这样的程序有所了解吗?
他们将使用哪些java类来跟踪这么多粒子,然后检查碰撞检测等内容? 粒子需要知道它们旁边是什么粒子,或者它们不是任何东西,所以它们可能会掉落等等。
这是一个例子,因为你不确定什么是沙子游戏。
数组主要是。
- 一个主动移动颗粒的一维arrays,由两个坐标表示(如果你想要重力加速度,可能是一个速度)。
- 一个二维的bool(或颜色)arrays,代表世界的固定部分。
最简单的物理模型是一旦它处于静止时移除一个颗粒(例如,当世界位置在下方,左下方和右下方都填充时):相反,填充相应的世界坐标。这使得计算可管理。 如果世界坐标下方的左侧或右侧空闲,则允许谷物向下移动。 移动谷物之间的谷物碰撞可以被忽略而不会失去太多的真实性。
(我不知道这些天我们需要多少CPU功率!)
简单版本可以在星期五宽松的夜晚实现(就像我刚才那样)。 只需创建一个代表您的字段的2D数组(字节,整数,等等)的程序。 在每个tick中,迭代所有元素并进行检查:
- 如果下面的字段(array [x] [y + 1])为空,则向下移动1个点(= set [x] [y]为空,[x] [y + 1]为占用)
- 否则,如果[x-1] [y + 1]为空,那就去那里。
- 否则,如果[x + 1] [y + 1]为空,那就去那里。
这是基础知识。 接下来,您必须添加检查,例如不“重复”计算谷物的计算(在以下迭代中检查的新位置设置标记)。
我按照这个教程,它很好,不太长,但仍指出常见的陷阱和类似的事情。
- java在递归函数中保留信息
- 如何读取pdf文件并将其写入outputStream
- java不正确的时区
- 如何在Java(JSSE)中使用默认的KeyStore时提供特定的TrustStore
- 在Ant中传递分号作为参数
- 使用Base64的AES会为同一纯文本生成不同的加密结果吗?
- 是否可以在Windows 2008服务器上使用Java FX启用硬件加速?
- java.lang.NoClassDefFoundError:org / hibernate / cache / EntityRegion配置EHCache
- 如何禁用java.awt.Graphics.fillRect(int x,int y,int width,int height)的效果?