当前位置: 首页 > 知识库问答 >
问题:

如何在libGDX-java中检测sprite或纹理上的触摸?

汪天宇
2023-03-14

我有一个主页按钮图标,它只是一个普通的精灵,里面有一个图像。我想在触摸这个按钮时执行一些操作。如何将触摸式监听器添加到此按钮,或者有其他更简单的方法来实现此目的吗?

共有1个答案

燕宜修
2023-03-14

执行此操作的一种方法是使用按钮的按钮边界设置一个矩形

Rectangle buttonBounds = new Rectangle(buttonX, buttonY, buttonWidth, buttonHeight);

如果您想检查用户是否触碰了按钮,请在render()方法中输入:

if(Gdx.input.justTouched()){
    Vector2 touch = viewport.unproject(new Vector2(Gdx.input.getX(), Gdx.input.getY()));

    //Check if button if touched
    if(buttonBounds.contains(touch)){
        System.out.println("Button touched!");
        //Do something
    }
}

如果您不使用视口,您可以将viewport.unproject()更改为cam.unproject(),其中cam是您的Camera

 类似资料:
  • 本文向大家介绍sprite-kit 检测触摸,包括了sprite-kit 检测触摸的使用技巧和注意事项,需要的朋友参考一下 示例 您可以覆盖4种SKScene检测用户触摸的方法 请注意,每种方法都接收一个touches参数(在特定情况下),该参数可以包含一个以上的单个触摸事件。

  • 在过去的几天里,我一直在将我的游戏(Apopalypse)移植到Android Mobile平台。我在Google上快速搜索了精灵触摸检测,但没有找到任何有用的东西。每个气球触摸一次就会弹出,我只需要检测它是否被触摸。这是我的气球生成代码: 渲染(x、y、宽度和高度随机): 在主游戏类中产卵:

  • 为子画面创建一个资产类,用于定义纹理,然后将子画面作为该纹理片,并带有该条的坐标。这是我试图旋转的精灵。我得到了使用Sprite Batch旋转它的建议(它旋转到我的触摸输入: 我收到错误: 类型SpriteBatch中的方法< code>draw(Texture,float,float,int,int,int,int)不适用于参数< code>(Sprite,int,int,int,int,in

  • 如果我创建一个.png 1024 x 1024的纹理,并在中间画一个124 x 124的圆,它的周围将是空的,它使用的RAM是否与我在124x124空间上画一个124 x 124的圆相同?

  • 再详细一点。我不使用Block2D。瓦片大小由8x8缩放为20x20。使用没有填充的texturepacker(无论如何填充都会出现问题)。我不知道该发布哪段代码,因为我不知道问题可能出在哪里,所以这里只是简单的块类。如果有任何帮助,我将不胜感激,谢谢。

  • 更新1 如您所见,在FrameBuffer上绘制的LibGDX纹理,与直接在SpriteBatcher上绘制的纹理相比,在SpriteBatcher上绘制的纹理要比原始纹理暗一些。 左侧为原图,比手机1080x1920屏幕小50%。 右侧部分是先在FrameBuffer上绘制的TextureRegion,然后在SpriteBatch上绘制,如下代码所示: 如你所见,它比直接从纹理绘制的图像暗一点。