Unity3d脚本21:输入系统接口类input
来源:第三维度
input类 是输入系统的接口。
使用这个类读取在Input Manager中设置的轴。
使用Input.GetAxis用下面的缺省轴读取轴心:"Horizontal"和"Vertical"被映射到摇杆,A,W,S,D和方向键,"Mouse X"和"Mouse Y"被映射到鼠标添量,"Fire1","Fine2","Fine3"映射到Ctrl,Alt,Cmd键和鼠标的三键或腰杆按钮。新的输入轴可以在Input Manager中添加。
如果你在为任何一种运动行为使用输入,那么使用Inpur.GetAxis。它给你一种平滑的可配置的输入,这个输入可以被映射到键盘,摇杆或鼠标。
使用Input.GetButton用于像事件一样的行为,不要将它用于移动,Input.GetAxis将使脚本代码更小更简单。
类变量
◆ static var anyKey:bool // 描述:当前按住了任何键或鼠标按钮吗?(读取)
◆ static var anyKeyDown:bool // 描述:用户按下任何键或鼠标按钮返回(Rend Only)。直到用户释放所用键/按钮并再次接下任何键/按钮时才返回真。
◆ static var input: String // 描述:返回这一帧中键盘的输入(只读)。
只有ASCII可以包含在inputString中。该字符串可以包含两个能被处理的特殊字符:字符“b”代表退格,"n"表示回车。
//显示如何从键盘读取输入
//(例如,用户输入它的名字)。
//你需要附加这个脚本到一个GUTText物体。
function Updarc(){
for (var c;char in Input inputString){
if(c=="b") { //退格,移除最后一个字符
iftguiText.Lcngth.text.Substring(0,guiText.text Length-1);
}
efse if (e=="n"){ //结束
prinr("Uscr cntered his name:"+guiText,text);
}
else //正常的文本输入.附加到尾部
{
guiText.text+=c;
}
}
}
◆ static var mousePosition:Vcctor3 // 描述:当前鼠标在像素坐标下的位置。屏幕或窗体的左下为(0,0),屏幕或窗体的左上为(Screen.width,Screen.height).
var particle:GamcObject,
function Update() {
if (lnput,GctButtonDown{"Firel")){
var ray=Camera.main.ScreenPointToRay(Input mousePositicn); //从当前鼠标坐标处创建一个射线
if{Physics.Raycast(ray)) {
Instontiatc(particlc,transfonn.position,transfonn.rotation);//如果碰到创建一个粒子
}
}
}
类方法
◆ static function CetAxis(axinName:string):float // 描述:设置由axinName确实虚拟轴的值。对于键盘和摇杆输入,这个值将在-1...1。
一个非常简单的行驶在x-z平面的汽车。
var speed=10.0;
var cotatinnSpeed=100.0;
function update()
{
var transtation=loput.getaxis("vertical")*spccd;
var rotation=inpul getaxis ("horizontal"*rotarionspeed)
translation*=time delta time // 使它以10米/秒速度移动而不是10米/帧
transtorm.transtate(1010translation); //沿着物体的Z轴移动变换
transform.rotate(0.rotation.0); // 绕着Y轴旋转
}
var horizontalspccd=2.0;
var verticelspeed=2.0
function update()
{
获取鼠标增量,这个没有在范围-1...1之间
var h=horizontalspeed*inpul.getaxis("mouse X");
var v=verticalspeed*input.getaxis("mouse Y");
transform.rotate(v.h.0);//指定一个鼠标查看
}
◆static function getaxisraw(axisname:string):float // 描述:设置由axisname确定虚拟轴的值,并且没有使用平滑过滤,对于键盘和摇杆输入,这个值将在-1...1的范围内。因为输入没有被平滑,总是-1,0或1.如果你想自己处理所有键盘输入的平滑,这个是很有用的。
function update(){
var speed=input.getaxisraw("horizoatal"*time deta time);
transform rotate(0.speed.0);
}
◆static function getbutton(button name:string):bool // 描述:当时由button name 确定的虚按钮被按住时返回真。考虑自动开火-这个将在按钮被按住时一直返回真。
var projectile:game object; //如果每0.5秒实例化一个projcctile,
var firerate=0.5;
private var nextfire=0.0;
function update()
{
fi(input getbutton("firel")&&time.time>nextfire){ //如果firel按钮(默认为Ctrl)被按下
nextfire=time.time+firerate;
clone=instantiate(peojecctile,teansform,position,transffrm,rotation);
}
}
只有使用这个实现事件行为例如,射击,使用input.getaxis 用于任意类型的移动行为
◆static function getbuttondown(button name:steing):bool // 描述:当由:button name 确定的虚拟按钮被按下时返回真。直到用户释放并再次按下时返回真。
var projectile:gameobject;
function update(){
if(input getbution down("firel")){ //当用户按下firel按钮时实黎化一个projcctile
elone=instantiate(projectile,transforrn,position.transforn.rotinon);
}
}
只使用这个实现事件行为例如,射击,使用lnput.GetAxis用于任意类型的移动行为。
◆ static function GetButton Up(buttonName:string):bool // 描述:当由buttonName确定的虚拟按钮被释放时返回真.直到用户按下按钮并再次松开时返回真。
var projectile:GameObject;
function Update ();
if(lnput GetButtonUp("Firel")){ //当用户按下Fire;按钮时实例化一个projectile.
clone=lnstantiate{projectile,transtorm.position,transform.rotation);
}
}
只使用这个实现事件行为例如,射击。使用lnput.GetAXis用于任意类型的移动行为,
◆ static funcrion GetKey(name:string):bool // 描述:当用户按住由name确定的键时返回真,考虑自动开火。键标识列表参考输入管理器。在处理输入时建议使用lnput.GetAxis和lnput.GetButton因为它允许端用户定义这些键.
funcrion Update(){
if(lnput.GetKey("up")){
print("up arrow key is held down");
}
if(lnput.GetKey("down"))
{
print("down arrow key is held down");
}
}
◆ static junction GetKey(key:keyGode):bool // 描述:当用户按住由key KeyCode枚举参数确定的键时返回真.
funcrion Update(){
if(lnput.GetKey(KeyCode.UpArrow)){
print("up arrow key is held down");
}
if(lnput.GetKey(KeyCode.DownArrow)){
print("down arrow key is held down");
}
}
◆ static function GetkeyDown(name:string):bool // 描述:当用户开始按下由name确的键时返回真.直到用户释放按钮并再次按下时返回真.键标示列表参考lnput Manager.在处理输入时建议使用lnput.GetAxis和Input.GetBUtton
function Update();
if(input GetkeyDown("space")){
print("space key was pressed");
}
}
◆ static function GetKeyDown(Key:KeyCode):bool // 描述:当用户按下由Key KeyCode枚举参数确定的键时返回真.
function Update(){
if(lnput GetKeyDown(KeyCode.Space))
print("space key was pressed");
}
}
◆ static function GetKeyUp(name:sting):bool // 描述:当用户释放由name确定的键时返向真.直到用户按下按钮并再次松开时返向真。键标示列表参考lntpot Manager.在处理输入时建议使用lnput.GetAxis和lnput.GetButton因为它允许端用户定义这些键.
function Update();{
if(lnput.GetKeyUp("space");
}
}
◆ static function GetKeyUP(Key:KeyCode):bool // 描述:当用户释放由Key KeyCde 校举参数确定的键时返回真.
function Update(){
if(lnput,GetKeyUp(KeyCode.Space));
print("space key was feleased");
}
}
◆ statie function GetMouseButton(button:int):bool // 描述:返回给定的鼠标按钮是否被按住。/button/值为0表示左键,1表示右键,2表示中键.
◆ statie function GetMouseButtonDown(button:int)bool // 描述:用户按下给定的鼠标按钮时返回真.直到用户释放按钮并再次按下它时才返回真.button值为0表示中键左键,1表示右键,2表示中键.
◆ statie function GetMouseButtonUp(button:int)bool // 描述:用户释放给定的鼠标按钮时返回真.直到用户释放按钮并再次释放它时才返回真.button值为0表示中键左键,1表示右键,2表示中键.
◆ statie function ResetlnputAxes();Void // 描述:重置所有输入。在ReaetlnputAxes之后所有轴将返回0并且所有按钮返回0.这可用于当重生玩家,并且当你不想任何来自键盘的输入还处于按下时。
lnput.ReaetlnputAxes();