有时候仅仅使用网格的位置来进行碰撞检测显得不够精确,因此 Greenfoot还提供了几个方法来检测游戏角色的图像是否发生了重叠。
1、getOneIntersectingObject(java.lang.Class cls)
返回一个与本对象相交的指定类型的其他对象。该方法会考虑图片尺寸所带来的伸展。
参数:cls - 搜索的对象类型(若传入“null”则会搜索所有类型的对象)
例如我们在树袋熊里面再添加一个判断是否碰倒叶子的方法
然后在act方法里添加一段测试代码,这样我们运行的时候,只要树袋熊碰到叶子就会播放声音,并吃掉叶子。
这些方法相比于基于网格的方法,需要更大的计算量,如果游戏中生成了很多角色对象,则可能会大大地降低程序的执行速度。
2、isTouching(java.lang.Class cls)
检测本对象是否与任何指定类型的其他对象相接触。
参数:cls - 搜索的对象类型(若传入“null”则会搜索所有类型的对象)
我们修改一下上面的touchLeaf()方法,如图所示
再来运行看看,当树袋熊碰到叶子也会播放声音。
还有其它的方法也能达到同样的效果,不过使用isTouching会更简单和直观一些。
本站内容未经许可,禁止任何网站及个人进行转载。