- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.2.3 以行进路线检测碰撞 以行进路线来检测是否碰撞的方法主要用于检测两个移动的物体或者移动物体与平面是否发生碰撞。 6.3 粒子的应用 可以把“粒子”想像成颗粒状的物体,如雪花、一块炸弹碎片、一颗沙子或烟雾中的粒子等特殊效果。许多的粒子组合起来,就变成了一些在现实生活中可以看到的物理及自然现象了。 6.3.1 粒子的定义 要使用粒子,首先必须了解粒子的用途与特性,然后再定义出一个适合的粒子类型。如: struct snow int x; //雪花所在的X坐标 int y; //雪花所在的Y坐标 BOOL exist; //是否存在 建立一个粒子类型的数组,以便产生许多个粒子供程序使用: snow flakes[50]; 6.3.2 雪花纷飞 “下雪”可以说是相当常见的自然现象,而在程序中要表现下雪时雪花纷飞的情景,使用粒子来表现可以说是最恰当不过的了。 demo12_18 6.3.3 放烟火 放烟火的原理跟物体爆炸的原理是一样的,可将每一颗烟火爆炸后所出现闪亮的碎片视为一颗粒子,因此同样可以运用粒子的方法在程序中模拟烟火的爆炸画面。 demo12_19 4.3 鼠标相关函数 这一节将介绍一些Windows API中经常使用的鼠标的相关函数。通过这些函数的运用,可以更灵活地来控制鼠标的移动、显示及消息输入。 4.3.1 获取窗口外鼠标消息 鼠标的输入消息只有鼠标光标位置在程序窗口中时才会起作用,否则程序就不会接收到鼠标的消息。这样的状况可能会有一些潜藏的危机,比如使用鼠标左键,窗口得到了WM_LBUTTONDOWN消息,接着鼠标光标被移出窗口外而后放开。此时程序无法取得放开按键的消息,对程序而言,鼠标的左键依然是处于按下状态(但事实上已经放开了),这样就有可能产生程序运行上的混乱。 为了确保程序可以正确地取得鼠标的输入消息,需要在必要的时候以下面的函数来设定窗口,以取得鼠标在窗口外所发出的消息: HWND SetCapture HWND hWnd ; //设定获取窗口外的鼠标消息 BOOL ReleaseCapture VOID ; //释放获取窗口外的鼠标消息 4.3.2 设定鼠标光标位置 在游戏程序中,有时需要设定鼠标光标的位置。 这里介绍一个可以用来设定鼠标光标位置的函数: BOOL SetCursorPos int X轴坐标, int Y轴坐标 ; //设定鼠标光标位置 通过SetCursorPos 函数中所设定的坐标是相对于屏幕左上角的屏幕坐标。 转换问题 事实上,以屏幕坐标的观点设定鼠标的位置会有一些小的问题。 假设要让射击游戏中的飞机一开始出现在游戏窗口中 0,0 的位置上,那么必须以SetCursorPos 函数来设定鼠标光标的坐标 0,0 。但是由于SetCursorPos 函数输入的必须是屏幕坐标,而窗口坐标 0,0 对应到屏幕坐标上的值无法得知,因此需要用到API中的一个将窗口坐标转换到屏幕坐标的函数: BOOL ClientToScreen HWND hWnd, LPPOINT 窗口点坐标 ; //窗口坐标转换为屏幕坐标 以上就是关于坐标转换的概念及设定鼠标光标位置的方法。此外,API中还有另一个将屏幕坐标转换为窗口坐标的函数: BOOL ScreenToClient HWND hWnd, LPPOINT 屏幕点坐标 ; //屏幕坐标转换为窗口坐标 4.3.3 显示与隐藏鼠标光标 在游戏程序中经常需要隐藏或者显示鼠标光标,这项工作需要利用下面的函数来实现: int ShowCursor BOOL true或false ; //隐藏及显示鼠标光标 这里所谓的隐藏及显示指的是鼠标光标的图案,事实上不论隐藏或者显示鼠标光标还是存在的。 4.3.4 限制鼠标光标移动区域 API中提供的ClipCursor 函数可以用来设置限制鼠标光标的移动区域和解除鼠标光标移动区域的限制。 BOOL ClipCursor CONST RECT 移动区域矩形 ; //限制鼠标光标移动区域 BOOL ClipCuror NULL ; //解除限制 要设定鼠标光标移动区域时,输入这个函数中的参数是一个RECT类型的矩形结构。 typedef strcut RECT LONG left; //矩形区域左上点X坐标 LONG top; //矩形区域左上点Y坐标 LONG right; //矩形区域右下点X坐标 LONG bottom; //矩形区域右下点Y坐标 窗口外部/内部区域 BOOL GetWindowRect HWND hWnd, LPECT 矩形结构 ; //取得窗口外部区域矩形 BOOL GetClientRect
您可能关注的文档
最近下载
- 乡村振兴视角下农村中小学教师胜任力的现状剖析与提升路径探究.docx VIP
- GB∕T 13861-2022《生产过程危险和有害因素》应用之3:危险源(环境因素)识别清单【(危险和有害因素类别、伤害方式、致害物、起因物、风险情景描述、事故类别、后果与影响)】.docx VIP
- 美学 全册教案.pdf VIP
- 恒达富士WTVF-VF1电气原理图.pdf VIP
- 《九制黄精加工技术规程》(DB43T 2980-2024).pdf VIP
- 骨伤科临床常用中药外治经验方二首.pdf VIP
- GB∕T 13861-2022《生产过程危险和有害因素》应用之2:危险源(物的因素)识别清单【(危险和有害因素类别、伤害方式、致害物、起因物、风险情景描述、事故类别、后果与影响)】.pdf VIP
- 国家职业标准--计量员.docx VIP
- Wistron FMD SOP to Vendor_May2018全物质揭露操作说明.pdf VIP
- 箱体尺寸自动计算表.xls VIP
文档评论(0)