• 常用的输入对象


        在游戏的开发过程中,时常需要获取用户的输入情况,Unity3D引擎在设计时就封装好了这些常用的方法与参数。

        针对用户的输入,Unity3D引擎专门为开发人员提供两个输入对象——TouchInput。开发人员通过Touch与Input输入对象中的方法及参数可以非常方便地获取用户输入的各种参数,包括触控的位置、相位、手指按下位移及用户鼠标键盘的输入等

    Touch输入对象

    Touch输入对象提供了非常详细的参数及方法,通过使用该对象,开发人员可以获取详细的如 Android、iOS等移动平台中的触摸操控信息。

    Touch输入对象的变量
    变量含义
    finger手指的索引
    deltaPosition距离上次改变的距离增量
    tapCount单击次数
    Position手指的位置
    deltaTime自上次改变的时间增量
    Phase触摸相位

    Input输入对象

    Input输入对象就可以获取用户一切的其他行为的输入

    Input输入对象的变量

    Input输入对象的变量
    变量含义
    mousePosition当前鼠标指针的像素坐标
    anyKeyDown用户单击任何键或鼠标按钮,第一帧返回true
    acceleration加速度传感器的值
    anyKey当前是否有按键按下,若有返回true
    inputString返回键盘输入的字符串
    touches返回当前触摸(Touch)列表

    mousePosition

    mousePosition变量是一个三维坐标,用于获取当前鼠标指针的像素坐标。像素坐标是以屏幕左下角为(0,0)、屏幕右上角坐标为(Screen.width,Screen.height)计算的。

    void Update () {
    		if (Input.GetButtonDown("Fire1"))//鼠标左键按下
    		{
    			Debug.Log(Input.mousePosition);//输出鼠标指针位置
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    anyKey变量和anyKeyDown变量

    anyKey变量的功能是检测当前是否有任何按键按下,若是有,就返回True。
    anyKeyDown变量和anyKey变量有些差别,该变量只有按下按钮后的第一帧返回True。在任意按键后,只会有一次输出,而anykey会每一帧返回一定数量的True。

    	void Update () {
    		if (Input.anyKey)//有按钮按下
    		{
    			Debug.Log("一个按键或鼠标按下,若有返回true");//输出信息
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    InputString变量

    inputString变量的功能是返回键盘在这一帧中输入的字符串。注意,返回的字符串中只包含ASCII码中的字符,若是本次没有输入字符串就会返回一个空串。

    	void Update () {
    		if (Input.inputString != "")//若当前输入字符串不为空
    		{
    			Debug.Log(Input.inputString);//输出输入字符串
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    accelerate变量

    accelerate变量可以获取设备在当前三维空间中的线性加速度,它常见于3D游戏中的重力感应操控模式。当用户倾斜设备时,若设备上有加速度传感器,就会传回一个代表设备倾斜加速度的三维向量,使用Input.acceleration变量就可以获取该参数

    touches变量

    通过Input.touches变量可以获取到当前在屏幕上的所有触控的引用,开发人员就可以根据索引轻易地获取各个触控点的信息,所以该变量也经常被使用到。








    Input输入对象中的常用方法
    变量含义
    GetAxis返回被表示的虚拟轴的值
    GetButton若虚拟按钮被按下,则返回true
    GetButtonUp抬起虚拟按钮的一帧返回true
    GetKeyDown按下指定按钮的一帧返回true
    GetMouseButton指定的鼠标按键按下时返回true
    GetMouseButtonUp指定鼠标按键抬起的一帧返回true
    GetAxisRaw返回没有经过平滑处理的虚拟轴的值
    GetButtonDown虚拟按钮被按下的一帧返回true
    GetKey按下指定按钮时返回true
    GetKeyUp抬起指定按钮的一帧返回true
    GetMouseButtonDown指定的鼠标按键按下的一帧返回true
    GetTouch根据索引返回当前触控(Touch类型)

    Input输入对象中的常用方法

    GetAxis方法和GetAxisRaw方法

    GetAxis方法和GetAxisRaw方法都是获取虚拟轴对应值的方法。在游戏的开发的过程中,开发人员经常会在屏幕中添加一些2D的虚拟轴。通过触控或鼠标事件改变虚拟轴的值可以控制场景中的游戏对象

    	private float speed = 0.1f;//移动速度
    	void Update () {
    		float moveX = Input.GetAxis("Horizontal");//获取水平轴的值
    		float moveY = Input.GetAxis("Vertical");//获取垂直轴的值
    		this.transform.Translate(new Vector3(moveX, moveY, 0) * speed);//移动物体
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    GetAxisRaw方法运行后按下方向键就会发现moveX的值只有-1、0、1这3种变化,没有中间的过渡值

    GetButton方法、GetButtonDown方法与GetButtonUp方法

    这3个方法用于监听虚拟按钮的按下状态,包括按钮按下时、按钮按下中、按钮抬起时3个状态。开发人员需要在Update方法中返回调这些方法来判断按钮的状态。

      void Update()
        {
            if (Input.GetButton("Fire1"))//按钮按下时
            {
                Debug.Log("Fire GetButton");
            }
            if (Input.GetButtonDown("Fire1"))//按钮按下中
            {
                Debug.Log("Fire GetButtonDown");
            }
            if (Input.GetButtonUp("Fire1"))//按钮抬起时
            {
                Debug.Log("Fire GetButtonUp");
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    GetKey方法、GetKeyDown方法与GetKeyUp方法

    这3种方法用于监听键盘上的按键状态,开发人员需要在Update方法中调用这些方法,并传入想要监听的键名或键码。每一个按钮

    GetKey():当前是否按下了任何键或鼠标按钮(在一帧的时间内不断返回true),按住时始终回调。
    GetKeyDown():当前是否按住任何键或鼠标按钮
    GetKeyUp():当前是否抬起按键

    void Update()
    	{
    		if (Input.GetKey("up"))//使用GetKey监听上按键
    		{
    			Debug.Log("up arrow GetKey");//输出信息
    		}
    		if (Input.GetKeyDown(KeyCode.UpArrow))//使用GetKeyDown监听上按键
    		{
    			Debug.Log("up arrow GetKeyDown");//输出信息
    		}
    		if (Input.GetKeyUp(KeyCode.UpArrow))//使用GetKeyUp监听上按键
    		{
    			Debug.Log("up arrow GetKeyUp");//输出信息
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    GetMouseButton方法、GetMouseButtonDown方法和GetMouseButtonUp方法

        当开发PC端的游戏时,肯定需要监听鼠标的操控。Input输入对象包含GetMouseButton、GetMouseButtonDown和GetMouseButtonUp这3种方法,这3种方法都是用来监听鼠标按键的。在使用时,需要在Update方法中传入鼠标按键的索引,这就可以对鼠标进行监听。

    这三种方法的参数是一个int类型的索引。常用的鼠标按键索引为0、1、2,它们分布监听鼠标的左键、右键、中键,需要使用时传入相应的索引就可以监听对应的按键

    void Update () {
    		if (Input.GetMouseButton(0))//GetMouseButton监听鼠标左键
    		{
    			Debug.Log("left mouseButton GetMouseButton");//输出信息
    		}
    		if (Input.GetMouseButtonDown(0))
    		{
    			Debug.Log("left mouseButton GetMouseButtonDown ");
    		}
    		if (Input.GetMouseButtonUp(0))
    		{
    			Debug.Log("left mouseButton GetMouseButtonUp");
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    GetTouch方法

    使用其参数时需要获取一个Touch类型的变量。Input.GetTouch方法用于获取Touch输入对象的引用,在使用时应传入一个索引值,它代表要获取的触控索引。

    void Update () {
    		if (Input.touchCount != 0)//当前发送触控
    		{
    			Vector3 touchPos = Input.GetTouch(0).position;//记录下触控点的位置
    		}
    		
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Mysql -- 表的操作
    JVM P3 垃圾回收,垃圾回收器
    Vue精美简洁登录页
    技术分享:国民远控向日葵如何通过BBR算法提升远控体验?
    画分层DFD图的基本原则
    海外社媒账号如何运营安全稳定?
    直播美颜SDK代码浅析:直播平台接入美颜SDK是怎样实现美颜的?
    C++网络编程之,客户连接服务器,并向服务器发信息,服务器接收信息,当输入End两者全关闭。如果两者需要相互收和发信息,需要掌握多线程。
    记一次docker环境搭建笔记
    基于51单片机的智能台灯设计
  • 原文地址:https://blog.csdn.net/ht_game/article/details/125581375