You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Fix CPUParticles2D repeatedly scaling particles with 0 velocity and Align Y
CPUParticles2D with Align Y turned on would update particles' transforms based on the velocity when velocity was non-zero, but would not set the transform for zero velocity. This left the transfrom value from the previous call, which may have already been scaled. In this case, each call to _particles_process would apply the scale again, causing the particle to repeatedly grow (or shrink for scales < 1.0). Updated the Align Y logic to always normalize the transform values before scale is applied.
This commit is contained in:
@@ -1097,10 +1097,11 @@ void CPUParticles2D::_particles_process(double p_delta) {
|
||||
|
||||
if (particle_flags[PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (p.velocity.length() > 0.0) {
|
||||
p.transform.columns[1] = p.velocity.normalized();
|
||||
p.transform.columns[0] = p.transform.columns[1].orthogonal();
|
||||
p.transform.columns[1] = p.velocity;
|
||||
}
|
||||
|
||||
p.transform.columns[1] = p.transform.columns[1].normalized();
|
||||
p.transform.columns[0] = p.transform.columns[1].orthogonal();
|
||||
} else {
|
||||
p.transform.columns[0] = Vector2(Math::cos(p.rotation), -Math::sin(p.rotation));
|
||||
p.transform.columns[1] = Vector2(Math::sin(p.rotation), Math::cos(p.rotation));
|
||||
|
||||
Reference in New Issue
Block a user