【问题标题】:Easy way to detect if sprite was touched?检测精灵是否被触摸的简单方法?
【发布时间】:2023-03-06 20:49:01
【问题描述】:

我有两个精灵,需要同时触摸它们,所以我制作了两个 Vector2 xy 和 xy1。

//xy = x and y coordinate of pointer 1
//xy1 = x x and y coordinate of pointer 2

//faces is the class for the sprites

 if(xy.x >= faces.faceSpr.getX() && xy.x <= faces.faceSpr.getX() + faces.faceSpr.getWidth() &&               //detecting if xy and xy1 are inside the sprites
                    xy.y >= faces.faceSpr.getY() && xy.y <= faces.faceSpr.getY() + faces.faceSpr.getHeight() &&         //*
                    xy1.x >= faces.faceSpr1.getX() && xy1.x <= faces.faceSpr1.getX() + faces.faceSpr1.getWidth() &&     //*
                    xy1.y >= faces.faceSpr1.getY() && xy1.y <= faces.faceSpr1.getY() + faces.faceSpr1.getHeight())      //*
                score += 1;
            else if(xy1.x >= faces.faceSpr.getX() && xy1.x <= faces.faceSpr.getX() + faces.faceSpr.getWidth() &&        //*
                    xy1.y >= faces.faceSpr.getY() && xy1.y <= faces.faceSpr.getY() + faces.faceSpr.getHeight() &&       //*
                    xy.x >= faces.faceSpr1.getX() && xy.x <= faces.faceSpr1.getX() + faces.faceSpr1.getWidth() &&       //*
                    xy.y >= faces.faceSpr1.getY() && xy.y <= faces.faceSpr1.getY() + faces.faceSpr1.getHeight()) 

我还没有测试过这段代码是否有效,有没有更简单更好的方法?

编辑:

我尝试使用 getBoundingRectangle() 方法,它可以工作,但我在设置它的位置时遇到问题。

sprite.getBoundingRectangle().setPosition(x,y);
// then I check if it works
System.out.println(sprite.getBoundingRectangle().getPostion);

但结果总是 0.0, 0.0

【问题讨论】:

    标签: java libgdx touch sprite


    【解决方案1】:

    解决方案很简单。获取它的矩形并进行 contains 调用。

    sprite.getBoundingRectangle().contains(new Vector2D(touch.x,touch.y)); //or
    sprite.getBoundingRectangle().contains(touch.x, touch.y); //
    

    确保您未投影正确。

    【讨论】:

    • 只有当一个精灵完全在另一个精灵中时才会包含它我认为正确的方法将是重叠或相交,但不是肯定包含,操作需要知道何时触摸而不是完全在里面
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多