XNA输入输出处理说课.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
XNA用户输入处理 XNA碰撞检测 XNA声音输出 XNA用户输入处理 XNA碰撞检测 XNA声音输出 XNA用户输入处理 XNA碰撞检测 XNA声音输出 LOGO string str2 = images\\logo; string str2 = images\\logo; string str2 = images\\logo; string str2 = images\\logo; string str2 = images\\logo; 掩饰XACT辅助工具 string str2 = images\\logo; string str2 = images\\logo; XNA游戏开发 常用输入及输出处理 本课要点 * 输入类型 XNA中的用户输入可以由多种设备组合而成:键盘、鼠标、Xbox 360手柄、Xbox 360周边设备和Windows Phone触摸屏和加速器。注意鼠标输入在Xbox 360和Windows Phone上不可用。 本节课将讲解如何为游戏添加对键盘,鼠标的支持。 在之前的课程中,我们讨论了轮询和事件注册。两者之间的不同在处理输入设备的时候最明显。传统的Windows程序员习惯于对事件进行注册,比如某个键被按下或着鼠标移动。在这个编程模型中,应用程序执行一些功能,然后当它空闲时,消息泵将消息送入应用程序并且事件被处理。在游戏开发中,没有所谓的空闲时间,所以允许开发者进行事件注册的开销过大。取而代之是由开发者对输入设备进行轮询以得知玩家是否对这些设备进行了操作。 * 键盘输入 方法 描述 Keys[] GetPressedKeys() 返回一个在方法被调用时被按下的键的数组 bool IsKeyDown(Keys key) 返回true或false,取决于方法调用时参数所代表的按键是否被按下 bool IsKeyUp(Keys key) 返回true或false,取决于方法调用时参数所代表的按键是否被释放 if(Keyboard.GetState( ).IsKeyDown(Keys.A)) 键盘输入是通过Microsoft.XNA.Framework.Input命名空间中的Keyboard类来处理的。Keyboard类有一个叫做GetState的静态方法,用KeyboardState结构的形式返回键盘目前的状态。 * 控制精灵自由移动 KeyboardState keyboardState = Keyboard.GetState( ); if (keyboardState.IsKeyDown(Keys.Left)) playerPosition.X -= speed; if (keyboardState.IsKeyDown(Keys.Right)) playerPosition.X += speed; if (keyboardState.IsKeyDown(Keys.Up)) playerPosition.Y -= speed; if (keyboardState.IsKeyDown(Keys.Down)) playerPosition.Y += speed; 为什么不用 If else提高效率? 如何确保按一次空格 发射一枚炮弹? * 属性 类型 描述 LeftButton MiddleButton RightButton ButtonState 返回鼠标左键的状态 返回鼠标中键的状态 返回鼠标右键的状态 ScrollWheelValue int 返回自游戏开始后鼠标滚轮滚动刻度的累加量.要想知道滚轮滚动了多少,把当前帧的ScrollWheelValue和上一帧的进行比较. X Y int 返回鼠标光标相对于游戏窗口左上角的水平位置(坐标).如果鼠标光标在游戏窗口的左侧,这个值是负值;如果在游戏窗口右边,这个值大于游戏窗口的宽度. 默认情况下当鼠标划过XNA游戏窗口时鼠标指针是隐藏的。如果您想在窗口中显示鼠标,只要设置Game类的IsMouseVisible属性为true就可以了。不管鼠标光标是否可见,GetState调用返回的MouseState结构体都表示鼠标当前的状态。 MouseState结构体中重要的属性 鼠标输入 本课要点 * 碰撞检测 实现碰撞检测最简单和快速的方式是通过包围盒算法。本质上,当用一个包围盒算法时,您需要在屏幕上的每个物体周围“画”一个盒子,然后检查这些盒子是否相交。如果相交,就有碰撞。 实际游戏通常使用一个比实际帧尺寸稍微小一点的矩形,这样将得到更加精确的碰撞检测: ringsRect.Intersects(skullR

文档评论(0)

4477769 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档