Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何使用绘制的矩形创建爆炸?_Java_Swing_Animation_Jframe_Jpanel - Fatal编程技术网

Java如何使用绘制的矩形创建爆炸?

Java如何使用绘制的矩形创建爆炸?,java,swing,animation,jframe,jpanel,Java,Swing,Animation,Jframe,Jpanel,我需要为我的2d Java swing游戏制作一个爆炸动画。 我需要多个黄色矩形,字面意思是“爆炸”。 我的解决方案是给每个矩形一个不同的x和y,因为每个矩形都必须指向另一个方向。问题是,我不知道如何有效地做到这一点。对不起,英语不好,请帮助我。任何帮助都是值得的这里是你需要做的一个非常粗略的概述。对于任何更复杂的事情,你都需要一个更强大的物理引擎 矩形的每一部分都由一个类的实例表示(piece,我们称之为它吗?)。所有这些片段都是在矩形分解时生成的。工件类存储其x和y位置、x和y轴上的速度、以

我需要为我的2d Java swing游戏制作一个爆炸动画。 我需要多个黄色矩形,字面意思是“爆炸”。
我的解决方案是给每个矩形一个不同的x和y,因为每个矩形都必须指向另一个方向。问题是,我不知道如何有效地做到这一点。对不起,英语不好,请帮助我。任何帮助都是值得的

这里是你需要做的一个非常粗略的概述。对于任何更复杂的事情,你都需要一个更强大的物理引擎

矩形的每一部分都由一个类的实例表示(
piece
,我们称之为它吗?)。所有这些
片段
都是在矩形分解时生成的。
工件
类存储其x和y位置、x和y轴上的速度、以弧度存储的旋转以及角速度的信息。如果你只是想要一个基本的爆炸效果,所有这些值几乎都可以随机生成

你必须不断地计算游戏的物理量(不断地模拟物理“滴答声”),并不断地在组件上绘制碎片。这可能意味着两个独立的循环,或者你可以一起做——只是不要让EDT泛滥

“滴答声”是一种以恒定速率(例如每秒30次)应用的操作,并执行以下操作:

  • 将工件的x和y速度分别添加到位置变量中
  • 将旋转速度变量添加到旋转角度变量
  • 如果你想在速度变量上施加阻力效应,将其减小到零
勾选完成后,对组件调用
repaint()
。该组件可以在
工件上迭代
类,但是您可以在屏幕上渲染它们(不要忘记旋转)

希望这能让你开始。显然,当你在物理引擎中追求可伸缩性时,需要做很多改变和优化,但这应该让你了解这个概念是如何工作的。我也没有提到同步,如果你在处理Swing和物理循环,你肯定需要考虑同步


如果你想多做一点物理引擎,我推荐你。希望你喜欢数学。

你说的“爆炸”是什么意思?飞成碎片或实际显示爆炸动画?多个小矩形飞到任何地方(从一个点),看起来您至少需要一个基本的物理引擎来计算每个碎片随时间的位置和方向。好的,谢谢,现在我知道,如果只使用java swingTo设置矩形的速度,那么就很难使用Random类并随机设置velocityX和velocityY。在每一个游戏逻辑勾选之后,你们将这些长方形沿着它们的速度方向移动,然后通过alpha将它们慢慢淡出,有问题吗?