gpt4 book ai didi

java - ArrayList中的类互相更新属性

转载 作者:行者123 更新时间:2023-12-01 16:44:51 24 4
gpt4 key购买 nike

我正在 LibGDX 中创建小型烟花模拟。我有一个名为 articles 的 ArrayList,这正在填充它:

for (int i = 0; i < 2; i++) {
Particle p = new Particle();
p.position = position;
p.velocity.x = MathUtils.random(-1f, 1f);
p.velocity.y = MathUtils.random(-1f, 1f);

particles.add(p);
}

然后在更新循环中:

for (int i = 0; i < particles.size(); i++) {
System.out.println(i + " " + particles.get(i).position.toString() + " + " + particles.get(i).velocity.toString() + " = ");
particles.get(i).update();
System.out.println(" " + particles.get(i).position.toString());
}

粒子更新功能:

velocity.add(acceleration);
position.add(velocity);

acceleration.set(0, 0);

速度是随机的,每个粒子都有唯一的速度,但位置是相同的。这是输出:0 (300.0,620.91364) + (-0.94489133,-0.45628428) =
(299.0551,620.45734)
1 (299.0551,620.45734) + (0.3956585,0.5208683) =
(299.45078,620.9782)
0 (299.45078,620.9782) + (-0.94489133,-0.45628428) =
(298.5059,620.5219)
1 (298.5059,620.5219) + (0.3956585,0.5208683) =
(298.90155,621.0428)
0 (298.90155,621.0428) + (-0.94489133,-0.45628428) =
(297.95667,620.5865)
1 (297.95667,620.5865) + (0.3956585,0.5208683) =
(298.35233,621.10736)

首先是粒子索引、位置、速度,然后是输出位置。

为什么它使用另一个粒子的位置?我试图弄清楚,但我做不到。

最佳答案

在填充 ArrayList 的 for 循环中,您有以下行:

p.position = position;

我不知道 position 从哪里来,但这里所有的粒子都指向同一个。

您必须为每个粒子创建一个新位置

p.position = new Position(x, y);

如果 position 是粒子的起点,您可以编写:

p.position = new Position(position.x, position.y);

关于java - ArrayList中的类互相更新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53818479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com