我试图以世界单位获取触摸坐标,以便可以使用viewport.unproject(Vector3)在屏幕上绘制纹理,但它返回的是NaN。

我的视口和相机的状态如下:

public class GameRenderer {

    private InvadersGame game;

    private Viewport viewport;
    private OrthographicCamera camera;
    private SpriteBatch batch;
    private Animation<TextureRegion> shipAnimation;
    private TextureRegion currentShipFrame;
    private Ship ship;
    private CameraDebug cameraDebug;
    private DebugCameraConfig debugCameraConfig;

    private TextureAtlas shipAtlas;

    private float timeElapsed;

    public GameRenderer(InvadersGame game) {
        this.game = game;
        init();
    }

    private void init() {
        camera = new OrthographicCamera();
        viewport = new FitViewport(GameConfig.WORLD_WIDTH, GameConfig.WORLD_HEIGHT, camera);
        batch = new SpriteBatch();

        shipAtlas = new TextureAtlas(Gdx.files.internal(AssetPaths.shipAnimation));
        shipAnimation = new Animation<TextureRegion>(1/10f, shipAtlas.findRegions("ship"), Animation.PlayMode.LOOP);
        ship = new Ship();
        cameraDebug = new CameraDebug();
        debugCameraConfig = new DebugCameraConfig();
    }

. . .

我有一个GameScreen类,该类实现屏幕并具有GameRenderer的实例,因此调用了init()方法。

这是我尝试过的:

Public class GameController

. . .

 private void updateShip() {
        ship.setPositions(renderer.getViewport().unproject(ship.getTouchPos()));
        log.debug(Float.toString(renderer.getViewport().unproject(ship.getTouchPos()).x));
    }

. . .

其中ship.getTouchPos返回Gdx.input.getX()和y的Vector3。

显然,我在GameController中有一个GameRenderer实例,以获取视口并将其用于将触摸坐标转换为世界坐标。

log.debug输出:

I/chatty: uid=10133(com.mygdx.game) GLThread 342 identical 2 lines
D/GameController: NaN
D/GameController: NaN

  ask by Nochman translate from so

本文未有回复,本站智能推荐:

3回复

libGDX camera.unproject()返回NaN

我有一个基本的LibGDX项目,我想在其中获取触摸位置,但是Android设备给出了屏幕坐标,而不是虚拟游戏坐标,因此我正在使用camera.unproject()来获取正确的坐标。 我得到的结果是返回的x,y值是NaN(不是数字)。 为什么会这样呢?
2回复

Libgdx Viewport,舞台不起作用

2个月前,我偶然发现了我正在处理的游戏无法与其他设备一起扩展的问题。 所以我决定实施视口,因为人们说这是最好的方式,也是一种简单的方法。 但是自从我开始以来已经有两个月了,但仍然没有一个有效的例子。 我已经阅读了我能找到的每一页,多次阅读wiki并询问了几个人,但从来没有得到过帮助我开始工
1回复

离开相机视口后处理实体

在我的游戏中的Libgdx中,我的身体进入摄像机视口,然后退出视口,再也不会返回。 内存管理销毁这些实体并将它们从Array中删除或使其休眠会更好吗?
2回复

Android的纵横比和视口:需要说明

首先,我知道该主题已经有很多主题,但是我还是一无所知。 我正在尝试制作适用于Android的游戏(可从Play商店下载),但我有一个单一的问题无法解决,我该如何制作可以在每部具有相同长宽比的手机上玩的游戏? 例如:我想制作一个游戏,其中某些物体从屏幕顶部随机掉落在玩家的角色上。
1回复

为什么在使用视口时调用unproject()时某些值是负数

我有一个用libgdz在android中用Java编码的游戏,我想出了如何在android中支持多种屏幕尺寸,但是当我调用camera.unproject()时,x值为负,y值为正,但高于屏幕的边界。 但是,一切看起来都很完美。 为什么会这样?
2回复

libgdx视口未拉伸

我目前在libgdx中创建StretchedViewPort时遇到问题。 正如您在图像中看到的那样,我添加了游戏屏幕,但整个屏幕并未伸展,并且有黑色空间。 我想知道我在做什么错。 我在下面提供了代码的相关部分。 此外,我还尝试在oncreate函数中使用将视口分配到舞台中,如下所示:
1回复

分配舞台视口?

我正在按照本教程进行操作,因此无法正确设置舞台到屏幕(或视口/相机)的位置。 鉴于我对舞台和场景还比较陌生,因此下面的行无法编译: 我将其更改为: 没有错误,也没有结果。 我从这里获取了文件(default.fnt,default.png,uiskin.atlas,uis
2回复

适合视口黑条

我目前正在开发一款游戏,您必须避免使用Asteroids。 为了使游戏在每台设备上看起来都一样,我使用了FitViewport。 不幸的是,我不知何故在顶部和底部获得了白条,而不是黑条。 我的游戏背景也是白色的,所以看起来有点奇怪。 游戏画面: 我把船拖进了白色的酒吧。