0

一定の速度(x、y)でミサイルのような発射体(オブジェクト)を発射したいのですが、ユーザーのタッチに応じて発射体を飛ばしたいです。

どうすればこのようなことを達成できますか?

PS私はこのようなことをしようとしましたが、それは私が必要とするものではありません. ユーザーのタッチに関係なく、一定のポイントに飛びます。また、重力の影響を受けます:

package com.david.helpers;

import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.utils.Array;
import com.david.objects.Acorn;

public class InputHandler implements InputProcessor{

    private Body ground;
    private Vector2 target;
    private Vector3 temp;
    private OrthographicCamera camera;
    private Array<Acorn> acorns;
    private static final float Pixels_To_Meters = 32.0f;
    public boolean isTouchDown = false;
    public InputHandler(Body ground,  Array<Acorn> acorns, OrthographicCamera camera) {
        this.camera = camera;
        this.ground = ground;
        this.acorns = acorns;
        target = new Vector2();
        temp = new Vector3();
    }
    @Override
    public boolean keyDown(int keycode) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean keyUp(int keycode) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean keyTyped(char character) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        // TODO Auto-generated method stub
        camera.unproject(temp.set(screenX, screenY, 0));
        target.x = temp.x;
        target.y = temp.y;
        isTouchDown = true;
        return true;
    }

    @Override
    public boolean touchUp(int screenX, int screenY, int pointer, int button) {
        // TODO Auto-generated method stub
        acorns.peek().getBody().applyLinearImpulse(20-target.x/Pixels_To_Meters, 20-target.y/Pixels_To_Meters*0.1f, target.x, target.y, true);
        isTouchDown = false;
        return true;
    }

    @Override
    public boolean touchDragged(int screenX, int screenY, int pointer) {
        // TODO Auto-generated method stub
        camera.unproject(temp.set(screenX, screenY, 0));
        target.x = temp.x;
        target.y = temp.y;
        return true;
    }

    @Override
    public boolean mouseMoved(int screenX, int screenY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean scrolled(int amount) {
        // TODO Auto-generated method stub
        return false;
    }
    public Vector2 getTarget() {
        return this.target;
    }
}

ユーザーのタッチに関係なく、ボディは一定のポイントに移動します。

4

0 に答える 0