可能是重复问题:
如何确定屏幕上触摸的3D空间中的内容?
我正在开发一个Android应用程序,同时使用OpenGL图形。
我在屏幕上画了一个正方形,我想让用户在触摸它时移动它。换句话说,当用户放手指在正方形上时,他应该能够移动它。如果他触摸到正方形以外的区域,则不会发生任何事情。
我该如何检测用户何时触摸正方形?
谢谢。
可能是重复问题:
如何确定屏幕上触摸的3D空间中的内容?
我正在开发一个Android应用程序,同时使用OpenGL图形。
我在屏幕上画了一个正方形,我想让用户在触摸它时移动它。换句话说,当用户放手指在正方形上时,他应该能够移动它。如果他触摸到正方形以外的区域,则不会发生任何事情。
我该如何检测用户何时触摸正方形?
谢谢。
可以使用射线拾取来实现触摸检测。我曾经遇到过同样的问题,我使用了这个页面上的代码:Android OpenGL ES射线拾取。getViewRay()方法计算射线的方向。如果你知道从[0,0,0]到射线[x,y,z]的方向,那么模拟射线投射并检测与边界对象的碰撞就相当容易了。
如果你只有一个正方形,你可以检查触摸坐标是否在正方形的四个顶点形成的空间内。对于非平行于x轴的正方形,您应该使用投影矩阵来投影其顶点。
更一般地说,有几种技术可以“拾取”OpenGL模型:射线拾取和颜色拾取是最常用的。确保查看{{link1:此文档}}。