其他分享
首页 > 其他分享> > android-Libgdx触摸并拖动到屏幕上的任意位置以移动精灵

android-Libgdx触摸并拖动到屏幕上的任意位置以移动精灵

作者:互联网

目前,我正在使用scene2d触摸板在屏幕上移动精灵.我想要做的是将所有屏幕都用作触摸板来移动精灵,但不知道从哪里开始.

>如果仅触摸屏幕,则精灵将不会移动.
>根据用户将手指从初始触摸点移开的距离,子画面应以不同的速度移动.
>用户拖动他们的
手指超出一定半径时,子画面将继续以
恒定速度.

基本上是一个触摸板,而没有实际使用scene2d触摸板

解决方法:

基本上,您可以在评论中找到答案.

>使用InputProcessor
>保存触摸时的触摸位置
>在拖动时检查保存的触摸位置与当前触摸位置之间的距离

一些代码作为示例:

class MyInputProcessor extends InputAdapter
{
    private Vector2 touchPos    = new Vector2();
    private Vector2 dragPos     = new Vector2();
    private float   radius      = 200f;

    @Override
    public boolean touchDown(
            int screenX,
            int screenY,
            int pointer,
            int button)
    {
        touchPos.set(screenX, Gdx.graphics.getHeight() - screenY);

        return true;
    }

    @Override
    public boolean touchDragged(int screenX, int screenY, int pointer)
    {
        dragPos.set(screenX, Gdx.graphics.getHeight() - screenY);
        float distance = touchPos.dst(dragPos);

        if (distance <= radius)
        {
            // gives you a 'natural' angle
            float angle =
                    MathUtils.atan2(
                            touchPos.x - dragPos.x, dragPos.y - touchPos.y)
                            * MathUtils.radiansToDegrees + 90;
            if (angle < 0)
                angle += 360;
            // move according to distance and angle
        } else
        {
            // keep moving at constant speed
        }
        return true;
    }
}

最后,您始终可以检查libgdx类的源代码,并查看其工作方式.

标签:drag,libgdx,touch,touchpad,android
来源: https://codeday.me/bug/20191027/1946918.html