纳金网

标题: Unity3D脚本中文教程2.26 [打印本页]

作者: 会飞的鱼    时间: 2012-5-22 14:34
标题: Unity3D脚本中文教程2.26
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中。

该字符串可以包含两个能被处理的特殊字符:字符“”代表退格。

*符"
"表示回车。

//显示如何从键盘读取输入

//(例如,用户输入它的名字)。

//你需要附加这个脚本到一个GUTText物体。function Updarc(){

for (var c;char in Input inputString){

//退格,移除最后一个字符

if(c=="") {

iftguiText.Lcngth.text.Substring(0,guiText.text Length-1);

}

//结束

efse if (e=="
"){

prinr("Uscr cntered his name:"+guiText,text);

}

//正常的文本输入.附加到尾部

elsc

}

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 spced=10.0;

var cotatinnSpeed=100.0;

function update()

}

//获取水平和垂直轴,

//默认滴它们被映射到方向键

//这个值的范围在-1到1

var transtation=loput.getaxis("vertical")*spccd;

var rotation=inpul getaxis ("horizontal"*rotarionspeed)

//使它以10米/秒速度移动而不是10米/帧

translation*=time delta time

//沿着物体的Z轴移动变换

transtorm.transtate(1010translation);

//绕着Y轴旋转

transform.rotate(0.rotation.0);

}

//指定一个鼠标查看

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 确定的虚按钮被按住时返回真。

考虑自动开火-这个将在按钮被按住时一直返回真。

//如果每0.5秒实例化一个projcctile,

//如果firel按钮(默认为Ctrl)被按下

var projectile : GameObject;

var fireRate : float = 0.5;

private var nextFire : float = 0.0;


function Update ()
{

     if (Input.GetButton ("Fire1") && Time.time > nextFire)
     {

         nextFire = Time.time + fireRate;

         var clone : GameObject =

         Instantiate(projectile, transform.position, transform.rotation) as GameObject;

     }

}
只有使用这个实现事件行为例如,射击,使用input.getaxis 用于任意类型的移动行为

◆static function getbuttondown(button name:steing):bool

描述:当由:button name 确定的虚拟按钮被按下时返回真。

知道用户释放并再次按下时返回真。

//当用户按下firel按钮时实黎化一个projcctile

var projectile:gameobject;

function update(){

if(input getbution down("firel")){

elone=instantiate(projectile,transforrn,position.transforn.rotinon);

}

}

只使用这个实现事件行为例如,射击,使用lnput.GetAxis用于任意类型的移动行为。

◆  static function GetButton Up(buttonName:string):bool

描述:当由buttonName确定的虚拟按钮被释放时返回真.

直到用户按下按钮并再次松开时返回真。

//当用户按下Fire;按钮时实例化一个projectile.

var projectile:GameObject;

function Update O;

if(lnput GetButtonUp("Firel")){

clcne=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.

这可用于当重生玩家,并且当你不想任何来自键盘的输入还处于按下时。

lnpu.ReaetlnputAxes();






欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5