java – 在游戏中检测被触摸对象的有效方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在游戏中检测被触摸对象的有效方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1174字,纯文字阅读大概需要2分钟。
内容图文
![java – 在游戏中检测被触摸对象的有效方法?](/upload/InfoBanner/zyjiaocheng/720/dd8074dcfd8c42998bb70274338602bd.jpg)
因此,想象一下类似于模拟人生的2D游戏,用于基于触摸的移动电话,其中人们可以与场景中的几乎任何对象进行交互.
如何有效地检测播放器正在触摸哪个对象?
在我的短暂体验中,循环遍历场景中的所有可见对象并检查它们是否被触摸到目前为止完成了这项工作,但是当屏幕中可能有许多移动物体听起来效率低下时不是吗?保持可见的移动对象列表本身可能消耗时间,因为每个帧可能必须遍历所有这些.
我认为的其他解决方案是:
>空间散列.将屏幕划分为网格,并将可见对象放在相应的存储桶中.对被点击对象的检测很快,但是每帧都将对象放在正确的桶中会产生额外的开销.
>维护四叉树.移动对象必须一直重新排列,之前的解决方案看起来更好.
在这种情况下通常做什么?
多谢.
解决方法:
首先要考虑的是加速方法是否真的对你的情况有帮助.例如,如果每帧只有一个查询,则当前方法需要检查每个对象一次.但是,如果所有对象都在移动,几乎所有加速结构都需要更新每个对象一次 – 所以,在这种情况下,为什么要这么麻烦?
如果您确定实际需要加速结构,那么您的解决方案似乎都是合理的:
>对于触摸界面,您知道查询的大小.因此,如果您的所有对象都是触摸或更小的对象,则空间散列应该是一个很好的解决方案.
>如果您的对象可能很大,请注意空间散列可能需要将大对象添加到许多散列桶中.在这种情况下,四叉树可能是一个更好的主意.
另一种解决方案是维护一个边界框的树.有多种算法可以使用它;一个特别是R-tree.
内容总结
以上是互联网集市为您收集整理的java – 在游戏中检测被触摸对象的有效方法?全部内容,希望文章能够帮你解决java – 在游戏中检测被触摸对象的有效方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。