我正在创建一个游戏,其中有大约 3000 个粒子落入一堆。每个粒子都是一个像素,我只是使用 boolean 值 [][] 来设置和检查哪个像素是清晰的。现在我正在使用这段代码
if (!isFalling(m)) {
if (isClear(getX() + 1, getY()) && isClear(getX() + 1, getY() - 1))
setX(getX() + 1);
else if (isClear(getX() - 1, getY()) && isClear(getX() - 1, getY() - 1)
setX(getX() - 1);
}
问题是这段代码给我一个看起来不太自然的非常严格的金字塔形状。如果你把它倒成一堆,我希望它看起来像盐。我的问题是,有人知道模拟粒子堆的算法或更好的方法吗? 任何帮助将不胜感激。
解决方法: 我找到了一篇不错的文章 here
最佳答案
您承担了一项艰巨的任务 :) 这不仅仅是如何计算和绘制粒子,而是描述粒子应该如何移动的物理学。
先看看这个:
http://www.daniweb.com/software-development/java/threads/426676/sand-game-problem-with-graphics
谷歌搜索时,尝试“粒子发生器”或“粒子发射器”。
另见这个问题:
How do those java sand games keep track of so many particles?
您可能缺少的主要内容是在您的系统中添加随机性,一些熵。
关于java - 粒子堆算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884660/