将像素坐标应用于屏幕坐标

2024-01-06

我试图让一个物体出现在该人最后触摸的地方。然而,当我尝试这样做时,它出现在错误的位置。我认为这是因为输入返回的坐标与显示坐标不同,我的代码如下:

public class Core implements ApplicationListener, InputProcessor
          { //Has to be here otherwise the code formatting becomes buggy


private Mesh squareMesh;
private PerspectiveCamera camera;
private Texture texture;
private SpriteBatch spriteBatch;
Sprite sprite;
float moveX = 0;


private final Matrix4 viewMatrix = new Matrix4();
private final Matrix4 transformMatrix = new Matrix4();

@Override
public void create()
{
    Gdx.input.setInputProcessor(this);


    texture = new Texture(Gdx.files.internal("door.png"));

    spriteBatch = new SpriteBatch();
    sprite = new Sprite(texture);
    sprite.setPosition(0, 0);
    viewMatrix.setToOrtho2D(0, 0, 480, 320);

    float x = 0;
    float y = 0;

}

@Override
public void dispose()
{
}

@Override
public void pause()
{
}

@Override
public void render()
{
    viewMatrix.setToOrtho2D(0, 0, 480, 320);
    spriteBatch.setProjectionMatrix(viewMatrix);
    spriteBatch.setTransformMatrix(transformMatrix);
    spriteBatch.begin();
    spriteBatch.disableBlending();
    spriteBatch.setColor(Color.WHITE);

    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);


    //spriteBatch.draw(texture, 0, 0, 1, 1, 0, 0, texture.getWidth(),
    //      texture.getHeight(), false, false);
    sprite.draw(spriteBatch);
    spriteBatch.end();
    update();
}

@Override
public void resize(int width, int height)
{
    float aspectRatio = (float) width / (float) height;
    camera = new PerspectiveCamera(67, 2f * aspectRatio, 2f);

}

@Override
public void resume()
{
}

public void update()
{

    float delta = Gdx.graphics.getDeltaTime();

    if(Gdx.input.isTouched())
    {
         Vector3 worldCoordinates = new Vector3(sprite.getX(), sprite.getY(), 0);
         camera.unproject(worldCoordinates);
        sprite.setPosition(Gdx.input.getX(), Gdx.input.getY());

        float moveX = 0;
        float moveY = 0;

 }
     }

为了简单起见,我裁剪了这段代码。 我还制作了一个视频来演示该错误:http://www.youtube.com/watch?v=m89LpwMkneI http://www.youtube.com/watch?v=m89LpwMkneI


相机.unproject http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Camera.html#unproject%28com.badlogic.gdx.math.Vector3%29将屏幕坐标转换为世界坐标。

Vector3 pos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(pos);
sprite.setPosition(pos.x, pos.y);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将像素坐标应用于屏幕坐标 的相关文章

随机推荐

  • Snowflake:无法使用阶段(S3)- SQL 编译错误:阶段不存在或未授权

    我在 Snowflake 中创建了一个外部舞台 我也尝试过使用公共存储桶 CREATE OR REPLACE stage DATABASE SCHEMA STAGE NAME url s3 bucket CREDENTIALS AWS KE
  • C# web 和 ftp 爬虫库

    我需要一个库 希望是 C 语言 它可以作为网络爬虫来访问 HTTP 文件和 FTP 文件 原则上 我很高兴阅读 HTML 我想将其扩展到 PDF WORD 等 我对初学者的开源软件或至少对文档的任何指示感到满意 Check NCrawler
  • UsbConnection.bulkTransfer 返回“-1”。这是什么意思?

    根据文档 消极反应意味着失败 如何知道出了什么问题 有关于错误类型的完整文档吗 为了更好奇 我正在尝试通过 USB 上传 arduino sketch 首先 我通过关闭 打开 DTR RTS 然后使用 Stk500 协议发送数据来引起引导加
  • noscript 内容是否加载到 bg 中

    即使启用了 javascript html 标签 noscript 是否会在后台加载内容 我有一个随机图像 每次页面加载时都会由 JS 调用 但我希望抓取所有链接 而不仅仅是当前的随机链接 同时 我不希望页面加载速度减慢 因为图像在后台加载
  • jQuery.remove() - 有没有办法在删除对象后将其取回?

    我在这个问题上基本上有同样的问题 Flash 视频仍在隐藏的 div 中播放 https stackoverflow com questions 1806032 flash video still playing on div that i
  • 为列提供多个索引/标题

    我正在使用 pandas 数据帧 这些数据帧本质上是这样的时间序列 level Date 1976 01 01 409 67 1976 02 01 409 58 1976 03 01 409 66 我想要的是级别列的多个索引 标题 如下所示
  • SQL Server 存储过程中的动态数据源

    我有一个包含多个数据库的 SQL Server 我有一个主数据库 其中包含多个包含实体和 ID 号的表 然后 每个实体都有一个与其所有信息相关的数据库 不是表 而是数据库 例如 如果 MAIN 数据库中的实体的 ID 号为 1 则同一 SQ
  • 如何从iPhone文档目录中读取pdf文件?

    目前我正在iPhone应用程序中工作 我在资源文件夹中有一个pdf文件 本地pdf文件 然后我成功读取了该pdf文件 paper pdf 下面我提到了读取本地pdf文件供您参考 Example CFURLRef pdfURL CFBundl
  • 如何从内存中的流式 zip 文件访问 zipEntry

    我目前正在实现一个电子阅读器库 skyepub http skyepub net 这要求我实现一个方法来检查 zipEntry 是否存在 在他们的演示版本中 解决方案很简单 public boolean isExists String ba
  • Firefox 报告“未找到支持格式和 Mime 类型的视频”

    此代码适用于 mp4 视频 但不适用于 3gp avi and flv files
  • 如果实例变量仍然有引用,Java GC 会销毁对象吗?

    我已经在线阅读了一些 Java 垃圾收集指南 但我仍然有点不清楚 并且想确保我的代码中没有内存泄漏 Java GC 是否会收集失去引用的对象 但其变量仍然具有引用 假设我有 SomeObject public class SomeObjec
  • freepascal正则表达式替换

    有没有一种简单的方法可以在 FreePascal Lazarus 中进行 RegExp 替换 四处寻找 我发现我可以相当容易地进行匹配 但我正在努力寻找进行搜索和替换的函数 我想要实现的目标如下 我有一个 XML 文件加载到 SynEdit
  • Jquery 循环调整大小

    我正在尝试让 Jquery Cycle 调整大小 到目前为止 我已经部分成功 它调整了大小 但幻灯片过渡有问题 我不明白为什么 这是整个页面http dl dropbox com u 8847353 Jai Sandhu Design Po
  • 当 select 语句没有返回行时如何返回默认值

    我有一个 select 语句 它返回两列 一个日期列和一个count value 柱子 当 的时候count value 列没有任何记录 我需要它返回 0 目前 它只是一起跳过该日期记录 这是查询的基础知识 select convert v
  • UserControl 如何判断它何时可见

    我的主窗口中有一个用户控件 如下所示
  • 如何在没有单词边界修饰符的情况下找到(“超级明星”)光标下的单词?

    Vim 的 超级明星 操作 搜索并突出显示光标下的单词 非常方便 但它在搜索精确匹配上有局限性whole word 是否有可能具有类似的功能 但没有封闭的字边界括号 更新 显然我太快提出问题了 看着here http vim wikia c
  • 如何在 makefile 中只编译 .h 文件?

    我有一个 makefile 它为两个类 和主类 创建目标文件 其中一个类只是在 h 文件中定义 在我的 makefile 中有一行内容是 FileName o FileName h g c FileName h 但是当我尝试编译时它说找不到
  • 获取 Swift 集合或数组中对象的下一个或上一个项目

    识别 Swift 数组中指定对象之前或之后的项目 同时防止出现越界错误的最佳方法是什么 解决这个问题的一个好方法是使用 Swift Array 的扩展 或者在本例中为所有 Bi DirectionCollection 对象 包括数组 提供更
  • 什么会导致 WP7 应用程序毫无例外地崩溃

    我有一个应用程序在设备模拟器上运行正常 但在真实设备上它会在一段时间后崩溃 它可能会在几分钟后发生 也可能在 1 2 小时后发生 无论是单独使用设备还是连接到 Visual Studio 都会出现此问题 重点是没有抛出异常 VS 只是报告连
  • 将像素坐标应用于屏幕坐标

    我试图让一个物体出现在该人最后触摸的地方 然而 当我尝试这样做时 它出现在错误的位置 我认为这是因为输入返回的坐标与显示坐标不同 我的代码如下 public class Core implements ApplicationListener