我的粒子开始向上射击。
然而,如果你拍摄"咒语"随着你右边的粒子,我想旋转整个发射器-90度,使它向右射击而不是向上射击。
如何做到这一点。
这是我的拍摄权,粒子向上爆炸,这很奇怪所以我希望它以-90度的角度拍摄,如果我像下图一样向右拍摄
答案 0 :(得分:0)
您可以获取效果的控制器并将旋转设置为它。控制器本身就是一个发射器。此外,您可以通过在运行时设置旋转来旋转整个效果。
使用给定的四元数调用Effect.rotate(Quaternion rotation);
(See this),您需要在演员中自行更新并调用旋转。但是旋转本身受到控制器/发射器更新的影响!
如果要旋转效果的一部分(如1或2个发射器不是全部)使用findController(string name)
klick here按名称(在GUI中设置)获取发射器并设置如上所述旋转到Controller。
我几乎不建议不要使用射向一个方向的效果! Insead我会使用一个没有向一个方向移动的效果,然后移动效果,最终具有相同的效果,但你可以指向哪个方向。我的意思的一个小例子:
public class SimpleRocket extends Firework {
private ParticleEffect boom, thrust;
private Vector2 direction;
private boolean secondeffect = false;
public SimpleRocket(FireworkTycoonMain main) {
super(main);
boom = new ParticleEffect();
boom.load(Gdx.files.internal("effect/firework.p"),
main.manager.getAtlas());
thrust = new ParticleEffect();
thrust.load(Gdx.files.internal("effect/goldregen.p"),
main.manager.getAtlas());
thrust.start();
}
public void init(float mass, float acceleration, Vector2 startdirection,
int flytime) {
this.thrust.setDuration(flytime);
this.mass = mass;
this.acceleration = acceleration;
direction = startdirection;
direction.nor();
}
@Override
public void act(float delta) {
final float alpha = direction.getAngleRad();
final float y = (float) (Firework.GRAVITY * mass + acceleration
* Math.sin(alpha) * delta * delta);
final float x = (float) (acceleration * Math.cos(alpha) * delta * delta + wind);
direction.x = x;
direction.y = y;
direction.nor();
setPosition(getX() + x, getY() + y);
boom.setPosition(getX(), getY());
thrust.setPosition(getX(), getY());
thrust.update(delta);
boom.update(delta);
if (thrust.isComplete() && !secondeffect) {
main.sound.playPeng();
boom.start();
secondeffect = true;
}
}
@Override
public void draw(Batch batch, float alpha) {
if (!boom.isComplete()) {
boom.draw(batch);
}
if (!thrust.isComplete()) {
thrust.draw(batch);
}
}
}
如果你对广泛的效果(不是一个点)做同样的事情,它可能看起来像你的效果,但你可以随意移动它。