首页|行业资讯|企业名录|周边产品|数字城市|增强现实|工业仿真|解决方案|虚拟医疗|行业仿真|图形处理|军事战场
资讯首页
行业资讯 >> 学习教程>>正文
Unity3d脚本21:输入系统接口类input
2012年3月23日    评论:    分享:

    来源:第三维度

   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();

标签:Unity3d
上一篇:Unity3d脚本20:原始绘图接口Graphics
下一篇:金视和科技走访中国公安大学
网友评论:Unity3d脚本21:输入系统接口类input
评论
留名: 验证码:
您可能还需要关注一下内容:
·基于Unity3D平台的三维虚拟城市研究与应用
·Unity3d 爆炸火焰特效教程
·Unity3d 基础特效教程-下雨
·基于Unity3D实现大件运输过程动态模拟
·基于Unity3D的虚拟水流墙系统的设计研究
·Unity3D实现3D立体游戏原理及过程
·在Unity3D中实现简单的碰撞检测
·unity3d导入资源工作流程[编译]
·Unity3D场景搭建5:相机(Cameras)
·Unity3D场景搭建4:灯光(Lights)
☏ 推荐产品

Ladybug5全景
商家:力方国际

ProJet®
商家:力方国际

ProJet®
商家:视科创新

Premium1.5
商家:视科创新

巴可HDX主动立体投
商家:德浩科视

巴可HDF-W26投
商家:德浩科视

巴可30000流明2
商家:德浩科视

巴可4万流明2K投影
商家:德浩科视
☞ 外设导航
☏ 企业名录
【广州】中科院广州电子技术有限公司
【北京】第二空间(北京)科技有限公司
【北京】幻维世界(北京)网络科技有限公司
【厦门】厦门惠拓动漫科技有限公司
【厦门】厦门幻眼信息科技有限公司
【深圳】深圳南方百捷文化传播有限公司
【北京】北京思源科安信息技术有限公司
【上海】上海殊未信息科技有限公司
【北京】北京赢康科技开发有限公司
【武汉】武汉科码软件有限公司
友情链接 关于本站 咨询策划 行业推广 广告服务 免责声明 网站建设 联系我们 融资计划
北京第三维度科技有限公司 版权所有 京ICP备09001338
2008-2016 Beijing The third dimension Inc. All Rights Reserved.
Tel:010-57255801 Mob:13371637112(24小时)
Email:d3dweb@163.com  QQ:496466882
扫一扫 第三维度
官方微信号