最新标注
热门标注
历史更新
站点地图
RSS
Home
CrazyCoder
»
原创
»
it评论
»
it业界
»
互联网
»
精品软件
开发语言
»
网络编程
编程综合
嵌入式开发
算法
英文资料
汇编语言
PowerBuilder
p2p技术
验证码识别
DotNet
Java教程
C语言教程
C 教程
Delphi教程
VB教程
QQ协议开发
项目管理
»
数据库
»
Web开发
»
Python
Css教程
XML教程
网页特效
PhotoShop教程
Illustrator教程
CorelDraw教程
Ruby教程
CorelDraw教程
网站安全
开发平台-工具
Web
PHP教程
Flash教程
Ajax教程
Javascript教程
Html教程
Dreamweaver
Asp教程
技术综合
»
软件测试
办公软件
QQ相关
Windows
网络技术
游戏开发
软件工程
软件教程
编程思想
游戏开发
外挂开发
OpenApi
AutoCad
广告设计
3D设计
平面设计相关
移动手机开发
服务器
»
Linux
Unix/FreeBsd
web服务器
服务器技术
安全
博文摘选
»
翻译
首页
»
游戏开发
» 调查对象的选取:游戏中对象选取的思路方法
Rss订阅
调查对象的选取:游戏中对象选取的思路方法
on 2008-12-14
in
游戏开发
|
0 Comment
对于PC游戏
在鼠标大行其道
今天
如何由鼠标
位置判定其下
对象是什么
是几乎所有游戏都必须面对
问题
以下提供几种思路方法
仅供参考
1、包围框法:
般
对游戏中
每个对象创建
个伴随
包围框
通过遍历所有可见对象
判定鼠标坐标点是否落在某个包围框
内部来获取其选取
对象
这种思路方法
优点是简单
算法容易理解
当使用矩形包围框
而对象数量又比较有限
时候
效率也是很好
缺点是选取不够精确
无法对对象
细节做选取
在2D游戏中
包围框
般是矩形
或者是若干个矩形
组合
而3D游戏使用包围盒
或者包围球或其组合等方式
无论具体方式如何
其算法实质都是
样
2、枚举法:
效率最低
思路方法的
和1
包围框法类似
它也需要遍历所有可见对象
但是由于缺少包围盒机制
只能检测对象位于鼠标下
那个位置是否有有效象素
或者有效
alpha值
对3D对象而言
就是检查鼠标点形成
选取射线是否穿越对象
某个面片
这种思路方法可以实现很精确
选取
但是由于效率太低
所以很少直接使用
般先使用思路方法1减少遍历对象
数量的后
再使用这个思路方法达到精确
选取
3、反馈法:
这是
个很有效
也很快捷
思路方法
尤其在3D游戏中
有无可比拟
优越性
反馈法
实现很简单
首先要维护
个后台缓冲区
当绘制目标对象
时候
同时将对象
可见信息(
般是对象图片
Alpha值
或者Z值) 写入后台缓冲
然后检测鼠标对应
缓冲区
位置
值是否有变化
如果变化了
表明刚才绘制
对象可以被鼠标选中
当缓冲使用了复杂
些
Z运算
时候
我们在绘制完成的后
就可以得到
个鼠标可以选取
对象列表
然后只要简单
根据
定
原则从这个列表中提取需要
对象就可以了
这个机制在2D下
般不维护额外
缓冲区而直接使用绘图缓冲区
3D下
像OpenGL提供了内置
反馈思路方法
更方便了用户
使用
实际也可以利用Z buffer
模板缓冲等实现类似
机制
这种思路方法可以实现精确到象素级
选取
而几乎不影响运行效率
缺点是需要对绘制部分
代码有很高
控制权限
4、直接映射法:
这也是
个高效算法
可以达到O(1)
时间复杂度
常见于2D战棋类游戏中
在这类游戏中
场景是用
个 2维表存储
表
每个项
保存着它上面
对象信息
我们可以通过
个简单
算法
由当前
鼠标位置得到表
索引
然后直接读取索引对应
项就完成了选取
在固定视角
3D游戏甚至非固定视角
3D游戏中
也可以使用这种思路方法
这种思路方法
缺点是对象在场景中
只能是按 2维表
或者多层 2维表排布
这种思路方法对内存空间
需求也比较大
棋牌类游戏比较适合使用这种思路方法
由于每种思路方法都有其固有
优缺点
而对游戏而言
场景又千变万化
复杂纷繁
为了能适应实际
需求
上面
思路方法可以组合使用
从而扬长避短
更好
达成需求
其他
些复杂
选取
比如范围选取(框选)等
也可以由以上几种基本
思路方法演化而来
Tags:
面向对象开发方法
面向对象的方法
面向对象方法
调查对象的选取
延伸阅读
2011-9-20
--
面向对象,Clean-Code: 面向过程 PK 面向对象
2011-9-17
--
面向对象,面向对象技术能力等级杂谈
2009-2-12
--
面向对象软件Software的测试:找错——面向对象软件Software的测试技术和思路方法
2008-12-13
--
软件Software工程的面向对象技术思路方法介绍
2009-2-12
--
面向对象思路方法:面向对象思路方法和软件Software复用关系
2011-3-29
--
面向对象,不要用面向对象来迷惑程序员新手
2009-2-12
--
面向对象面向过程:面向对象软件Software开发和过程( 6) 针对契约设计
2009-1-9
--
面向对象开发方法:全面实现面向对象开发网站WebSite
2009-2-12
--
面向对象思路方法:面向对象思路方法综述
2011-5-10
--
面向领域,面向领域开发示例
最新评论
发表评论
昵称
评论
验证码
点击图片更换
赞助商广告
随机更新
软件测试策略,自动测试软件的设计策略
mysql数据库,mysql数据库安全注意事项(转)
c语言程序解析,C语言学习趣事_戏说间接引用和解析引用
乔布斯传记,乔布斯亲自参与编写的传记细节解析
安捷伦,Anyway,记下我的安捷伦处面
matlab仿真,matlab仿真神经网络(1)BP神经网络
香港首家苹果零售店今日开业:粉丝通宵排队
t4模板,不要错过如此强大的T4模板
whois,Asp.net Domain Whois功能的实现
面向对象编程,.NET4.0面向对象编程漫谈
微博失落者下注:网易盛大转战轻博客
给你一千万,Google+ 开放注册头两天暴涨近一千万新用户
疯狂足球——Android手机游戏开发(实习报告)
java数组,JAVA中运用数组的四种排序方法
IIS+PHP5.3+FastCGI+MySQL5....
java中用法,Java中Interface的用法
cnblog,My feeling of CNBLOG
团宝网大规模裁员,传团宝网上海分公司大规模裁员 官方未予置评
wpf数据绑定,参照WPF实现Silverlight中的多值绑定特性
ampgt,Step By Step(Java 常用对象篇<二>)
有关MATLAB 7.0 在Windows 系统上...
java修饰符,【C++】我对C++ const修饰符的一些认识
extjs是什么,是什么让你的ExtJS应用程序运行缓慢?
限制的近义词,MonoTouch 的限制
Windows Phone Mango Tips(1)
新浪微博被关闭,新浪微博会不会被关闭?
最后一站,LINQ学习之旅——最后一站"LTX"之XML基本操作(下)
焕发新生,强悍的Windows 8:让陈年旧手机HTC Shift焕发新生
积的近似数习题,近似与精确——《狂人C》习题解答15(第三章习题5)
博弈游戏txt,博弈游戏
热门标注
总统府
(1)
jsp制作表单
(1)
jsp隐藏表单
(1)
第三方物流集成商
(1)
随笔规则
(1)
诛仙服务器维护
(1)
服务器日常维护
(1)
wow服务器维护
(1)
向袁隆平致敬
(1)
淘宝招聘微博
(1)
向沙翁致敬
(1)
pullxml
(1)
北京通信管理局
(1)
向中国人脱帽致敬
(1)
淘宝商城张勇微博
(1)
xmlpull
(1)
北京市通信管理局
(1)
pull解析器
(1)
向周星驰致敬先
(1)
北京移动通信
(1)
最近更新
梦幻诛仙》两次增开新服瞬满
10月22日19:00时再次加开3组新服
arp绑定脚本:绑定HGE到AngelScript脚本系统
游戏开发流程:游戏开发制作流程
MD2关键帧动画实现思路方法
通用编程器:游戏引擎中的通用编程技术
3dgameengine:3D Engine 的设计架构
运动模糊:简单的运动模糊效果实现思路方法
qq游戏外挂:通过游戏策划阶段防治游戏外挂
坐标转换:3D坐标转换成屏幕坐标的思路方法
外挂制作实例:游戏外挂制作例子包含代码
setstreamsource:SetStreamSource函数和数据流的使用
depthoffield:景深效果(Depth of Field) 的实现思路方法
角色扮演游戏引擎的设计原理
hge使用:HGE使用GDI绘制中文字体
如何成为一个程序员:想成为一个游戏程序员需要有以下资料
游戏设计的十条戒律
1万游戏开发专业人员难满足10万需求
扫雷游戏vb代码:模拟实现扫雷游戏代码
界面设计:界面流程控制模式设计
最新标注
总统府
(1)
jsp制作表单
(1)
jsp隐藏表单
(1)
第三方物流集成商
(1)
随笔规则
(1)
诛仙服务器维护
(1)
服务器日常维护
(1)
wow服务器维护
(1)
向袁隆平致敬
(1)
淘宝招聘微博
(1)
向沙翁致敬
(1)
pullxml
(1)
北京通信管理局
(1)
向中国人脱帽致敬
(1)
淘宝商城张勇微博
(1)
xmlpull
(1)
北京市通信管理局
(1)
pull解析器
(1)
向周星驰致敬先
(1)
北京移动通信
(1)
最新评论