【问题标题】:Collision detection between imageview and drawables [duplicate]imageview和drawables之间的碰撞检测[重复]
【发布时间】:2018-01-18 18:13:10
【问题描述】:

我正在尝试将我的 ball1 碰撞到 greengreen 可绘制对象。如何确定碰撞?

  public boolean CheckCollisionred(View ballr,View rr_1,View rg_3) {
    Rect R1 = new Rect(ballr.getLeft(), ballr.getTop(), ballr.getRight(), ballr.getBottom());
    Rect R2 = new Rect(rr_1.getLeft(), rr_1.getTop(), rr_1.getRight(), rr_1.getBottom());
    Rect R3 = new Rect(rg_3.getLeft(), rg_3.getTop(), rg_3.getRight(), rg_3.getBottom());
    return R1.setIntersect(R2, R3);
 
}

@Override
public void run() {startballanimation();
    if (CheckCollisionred()) {
        Score++;
    }else
        Score--;
}

更新:这显示错误“主要活动中的 Checkcollisionred() 不能应用于预期参数,实际参数”

编辑:问题是我有一个显示我想要碰撞的可绘制对象的图像按钮。

【问题讨论】:

  • 使用链接问题的答案来查找 Drawable 的位置,然后使用一些 if 语句来检测碰撞。
  • 您应该了解用于此类游戏的库。 LibGDX 是一个非常受欢迎的。
  • 请详细说明您希望您的应用程序做什么以及它当前正在做什么。可绘制对象会移动吗?你想要他们吗?如果有帮助,请随时发布一些屏幕截图。
  • 所以屏幕底部有三个图像按钮,并且有球从顶部向下。 drawables没有移动。当为球指定的drawable被点击时,分数会增加......所以基本上drawable会接住球..@Code-Apprentice
  • 好的,让我们简化一下。听起来落球与您当前的问题无关。相反,您希望在用户点击或拖动屏幕时移动屏幕上的某些对象。那是对的吗?如果是这样,请创建一个尝试执行此操作的minimal reproducible example。此代码示例不应包含任何球,只有您要移动的对象。

标签: java android android-studio android-drawable imagebutton


【解决方案1】:

您可以检查此以查找两个视图的冲突。 您可以在任何 Imageview 中添加该可绘制对象。

public boolean CheckCollision(View v1,View v2) {
    Rect R1=new Rect(v1.getLeft(), v1.getTop(), v1.getRight(), v1.getBottom());
    Rect R2=new Rect(v2.getLeft(), v2.getTop(), v2.getRight(), v2.getBottom());
    return R1.intersect(R2);
}

您可以将drawable添加为src

    <ImageView
android:id="@+id/imgLogo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/logo"/>

【讨论】:

  • 在 src 属性中。
  • 如何在图像视图中设置可绘制对象?这个给我一个错误 gr1 = (ImageView) findViewById(R.drawable.greengreen);
  • 你能详细说明一下吗?请谢谢
  • 你应该使用 findViewById(R.id.imgLogo)
  • 如果我想让 ball1 在许多可绘制对象中发生碰撞怎么办?我可以使用 public boolean CheckCollision(View v1,View v2,v3,v4) { Rect R1=new Rect(v1.getLeft(), v1.getTop(), v1.getRight(), v1.getBottom());矩形 R2=新矩形(v2.getLeft(),v2.getTop(),v2.getRight(),v2.getBottom());返回 R1.intersect(R2); }
猜你喜欢
  • 2018-08-23
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多