对于PC游戏,在鼠标大行其道的今天,如何由鼠标的位置判定其下的对象是什么,是几乎所有游戏都必须面对的问题。
以下提供几种方法,仅供参考。
1,包围框法。一般的,对游戏中的每个对象创建一个伴随的包围框,通过遍历所有可见对象,判定鼠标坐标点是否落在某个包围框的内部来获取其选取的对象。
这种方法的优点是简单,算法容易理解,当使用矩形包围框,而对象数量又比较有限的时候,效率也是很好的。缺点是选取不够精确,无法对对象的细节做选取。
在2D游戏中,包围框一般是矩形,或者是若干个矩形的组合,而3D游戏使用包围盒,或者包围球或其组合等方式。无论具体方式如何,其算法实质都是一样的。
2,枚举法。效率最低的方法之一。
和1,包围框法类似,它也需要遍历所有可见对象,但是由于缺少包围盒机制,只能检测对象位于鼠标下的那个位置是否有有效象素,或者有效的alpha值,对3D对象而言,就是检查鼠标点形成的选取射线是否穿越对象的某个面片。
这种方法可以实现很精确的选取,但是由于效率太低,所以很少直接使用,一般先使用方法1减少遍历对象的数量之后,再使用这个方法达到精确的选取。
3,反馈法。这...[ 查看全文 ]