3

ある角度でポイント (Vector2) を移動したい。私には私の角度があります。しかし、私は数学や libgdx が苦手です。角度を取得するには、これを使用します:

degrees = (float) ((Math.atan2(touchPoint.x - x,
                -(touchPoint.y - y)) * 180.0d / Math.PI) + 240.0f);

今、私はベクトルを動かしたい。しかし、私は本当に何をしなければならないのか分かりません... 質問を見ましたが、転送ではなく、角度を変えることについて何かがありました. libgdx にはこのための関数が必要だと思います。助けてください。

アップデート :

public class Games implements ApplicationListener {

SpriteBatch spriteBatch;
Texture texture;
float x = 160;
float y = 5;

Vector2 touch;
Vector2 movement;
Vector2 position;
Vector2 dir;
Vector2 velocity;

float speed;
float deltaTime;

@Override
public void create() {
    spriteBatch = new SpriteBatch();
    texture = new Texture(Gdx.files.internal("images/1.png"));

    touch = new Vector2();
    movement = new Vector2();
    position = new Vector2();
    dir = new Vector2();
    velocity = new Vector2();

    speed = 5;
    deltaTime = Gdx.graphics.getDeltaTime();
}

public void render() {
    Gdx.gl.glClear(Gdx.gl10.GL_COLOR_BUFFER_BIT);
    deltaTime += 0.5f;

    spriteBatch.begin();

    begin(deltaTime);
    spriteBatch.draw(texture, position.x, position.y);

    spriteBatch.end();
}

private void begin(float deltaTime) {
    touch.set(Gdx.input.getX(), Gdx.input.getY());

    position.set(x, y);
    dir.set(touch).sub(position).nor();
    velocity.set(dir).scl(speed);
    movement.set(velocity).scl(deltaTime);
    position.add(movement);
}
4

2 に答える 2

0
float dy = touchPoint.y - y;
float dx = touchPoint.x - x;

degree = Math.atan2(dy, dx) * MathUtils.radToDegree;
于 2013-07-17T13:03:30.867 に答える