Input鼠标键盘输入

164 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

鼠标输入:

屏幕坐标的原点是在屏幕的左下角,往右是X轴正方向,往上是Y轴正方形。通过

print(Input.mousePosition);

命令可以在控制台中查看鼠标在屏幕上的位置,控制台上的返回值Vector3只有X和Y的值,没有Z的值,是因为屏幕本来就是2D的,所以不存在Z轴这一概念。

如何用代码实现检测鼠标的输入呢,我们可以通过if语句来判断:

如果想要检测鼠标按下的一瞬间进入可以使用以下代码:


If(Input.GetMouseButtonDown(0))//0用来测试左键,1用来测试右键,2用来测试鼠标的中键

{print(“鼠标的某个键被按下了”);}

如果想要检测鼠标抬起的一瞬间进入可以使用以下代码:


If(Input.GetMouseButtonUp(0))//0用来测试左键,1用来测试右键,2用来测试鼠标的中键

{print(“鼠标的某个键被抬起了”);}

如果想要检测鼠标长按按下的时候都会进入可以使用以下代码:


If(Input.GetMouseButton (0))//0用来测试左键,1用来测试右键,2用来测试鼠标的中键

{print(“鼠标的某个键被长按了”);}

我们可以通过print(Input.mouseScrollDelta)命令在控制台中查看鼠标的中键的滚动状态,如果控制台上显示的是(0,1,0)则是向上滚动;如果控制台上显示的是(0,0,0)则是没有滚动;如果控制台上显示的是(0,-1,0)则是向下滚动。

键盘输入:

键盘的输入与鼠标的输入差距不大,都是通过状态来查看是否达到效果

如果想要检测键盘的某个键是否被按下可以使用以下代码:


If(Input.GetKeyDown(KeyCode.w))

{print(“W键被按下了”);}

或者


If(Input.GetKeyDown(“w”))//引号内的字符串必须是小写的,不然会报错

{print(“W键被按下了”);}

如果想要检测键盘的某个键是否被抬起可以使用以下代码:


If(Input.GetKeyUp(KeyCode.w))

{print(“W键被抬起了”);}

如果想要检测键盘的某个键是否被长按可以使用以下代码:


If(Input.GetKey(KeyCode.w))

{print(“W键被长按了”);}

我们通过鼠标键盘的输入可以达到控制玩家的效果,比如基础的移动,跳跃之类等等,并且Unity中提供了更为方便的方法来帮助我们实现控制对象的目的,即默认轴。

默认轴的使用方法也不难,如果想要在鼠标横向移动时,获得-1到1之间的变换,可以使用以下代码来获得这个值。

Print(Input.GetAxis(“Mouse X”));

同理如果想要在鼠标纵向移动时,获得-1到1之间的变换,可以使用以下代码来获得这个值。

Print(Input.GetAxis(“Mouse Y”));

如果想要在键盘A键和D键被按下时,获得-1到1之间的变换,可以使用以下代码来获得这个值。

Print(Input.GetAxis(“Horizontal”));

此时我们就可以通过它来控制对象的左右移动或者左右旋转;同理如果想要在键盘S键和W键被按下时,获得-1到1之间的变换,可以使用以下代码来获得这个值。

Print(Input.GetAxis(“Vertical”));

此时我们就可以通过它来控制对象的上下移动或者上下旋转。

我们默认的GetAxis方法返回的值是在-1~1之间慢慢的变化,而GetAxisRaw方法虽然和GetAxis方法的使用方式相同,但是它的返回值只会是-1、0、1这三个整数,不会有小数。