游戏的输入

1228阅读 0评论2008-02-26 weikent
分类:C/C++

在XNA中,输入有3中方式,键盘,鼠标,xbox的手柄。2中模式,数字方式和模拟方式。
 
数字方式 有2个可能的状态,开或者关,用boolean来表示,xbox的手柄上的start键或者时间keyboard的按键。
 
模拟方式 产生一个范围值,xbox的手柄上的摇杆和mouse的移动,可以用很多种方式表示这个范围值。在xbox上用-1.0 ~ 1.0的float值表示摇杆的值;
 
接受键盘输入, 要先创建一个KeyBoardState的对象的句柄,再GetState(),KeyBoard.GetState().
 
接受鼠标输入, 要先创建一个MouseState的对象的句柄,再GetState(),Mouse.GetState().
 
没有xbox, 不操心。
 
 
先说鼠标输入,Mouse.GetState()得到当前鼠标的状态,包括LeftButton,RightButton,MiddleButton,ScrollWheelValue,X,Y,XButton1,XButton2。其中X,Y返回的是坐标值(int型)
LeftButton,RightButton,MiddleButton,ScrollWheelValue,Xbutton1,Xbutton2返回的是Button的状态(state),Pressed和Released。 确定Button的状态需要一个ButtonState枚举(enumeration)
 
ButtonState buttonState = Mouse.GetState().LeftButton;
 
buttonState == ButtonState.Prssed     用来判断鼠标左键是否按下。
 
可以在游戏初始化的时候得到鼠标的状态(oldButtonState),一般鼠标的按键状态为Released。 当按下鼠标键的时候后,鼠标状态产生变化,新鼠标状态(newButtonState)为Pressed。可以用这个状态来确定鼠标是否是第一次按下,
 
if (newButtonState == ButtonState.Pressed && oldButtonState == ButtonState.Released)
            {
                mouseX = current_mouse.X;
                mouseY = current_mouse.Y;
                oldButtonState = ButtonState.Pressed;//记得给oldButtonState赋值。不然一直以为是第一次按下
            }
if (newButtonState == ButtonState.Released)
            {
                oldButtonState = ButtonState.Released;//在此时重新恢复初始值。
            }
 
 
键盘的输入基本和WindowApplication 一样,只是要用到KeyBoard.GetState(),有两个重要函数,IsKeyDown(),IsKeyUp(), 配合Keys枚举(Eunmeration),来判断是那个键被按下或是抬起,
在Keys枚举中有键盘上所有的键。
 
KeyboardState newState = Keyboard.GetState();
 
newState.IsKeysDown(Keys.Space);//判断空格键按下
 

 
 
上一篇:《XNA高级编程:Xbox 360和Windows》4-1
下一篇:XNA