常用的输入对象

    在游戏的开发过程中,时常需要获取用户的输入情况,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);//输出鼠标指针位置
		}
	}

anyKey变量和anyKeyDown变量

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

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

InputString变量

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

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

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);//移动物体
	}

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");
        }
    }

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");//输出信息
		}
	}

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");
		}
	}

GetTouch方法

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

void Update () {
		if (Input.touchCount != 0)//当前发送触控
		{
			Vector3 touchPos = Input.GetTouch(0).position;//记录下触控点的位置
		}
		
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值