当前位置:   article > 正文

Unity基础篇-----Input输入_unityinput函数

unityinput函数

前言

此篇为个人对此部分所掌握知识的理解,如有错误的地方请谅解!,后续会对此部分知识进行进一步完善。

在程序中输入系统是必不可缺的,这部分知识也是我们必须需要掌握的,在Unity使用Input类来读取传统游戏中输入的轴,下面我们对Unity Input类中会常用到的函数及变量进行一个讲述。

一、读取键盘输入

方法所用参数:string类型(键盘按键对应的英文名称,26个英文字母可以用小写),或者使用KeyCode枚举,选择你需要判断的按键。

1、Input.GetKey()方法,返回类型为bool类型,当你一直按着某个按键时触发里面的内容

2、Input.GetKeyDown()方法,当你在按下某个按键的瞬间触发。

3、Input.GetKeyUp()方法,当你在按下某个键后松开的瞬间触发。

使用方法:

  1. void Update()
  2. {
  3. if (Input.GetKey("w"))
  4. {
  5. print("w键被一直按着");
  6. }
  7. if (Input.GetKey(KeyCode.W))
  8. {
  9. print("w键被一直按着");
  10. }
  11. //------------------------------------
  12. if (Input.GetKeyDown("w"))
  13. {
  14. print("你按下了w键");
  15. }
  16. if (Input.GetKeyDown(KeyCode.W))
  17. {
  18. print("你按下了w键");
  19. }
  20. //------------------------------------
  21. if (Input.GetKeyUp("w"))
  22. {
  23. print("你松开了w键");
  24. }
  25. if (Input.GetKeyUp(KeyCode.W))
  26. {
  27. print("你松开了w键");
  28. }
  29. }

二、鼠标输入

方法所用参数:0(左键),1(右键),2(中键)

1、Input.GetMouseButton()方法,当你一直按着鼠标时触发。

2、Input.GetMouseButtonDown()方法,当你按下鼠标按键的一瞬间触发。

3、Input.GetMouseButtonUp()方法,当你按下鼠标后,松开的瞬间触发。

使用方法:

  1. void Update()
  2. {
  3. if (Input.GetMouseButton(0))
  4. {
  5. print("鼠标左键被你一直按下");
  6. }
  7. if (Input.GetMouseButtonDown(0))
  8. {
  9. print("你按下了鼠标左键");
  10. }
  11. if (Input.GetMouseButtonUp(0))
  12. {
  13. print("你松开了了鼠标左键");
  14. }
  15. }

三、虚拟按钮输入

方法所用参数:"虚拟按钮名称"

Input.GetButton()方法,当你一直按下虚拟按钮,比如手柄的扳机键(“Fire1”)

Input.GetButtonDown()方法,当你按下虚拟按钮的瞬间

Input.GetButonUp()方法,当你松开虚拟按钮的瞬间

  1. void Update()
  2. {
  3. if (Input.GetButton("Fire1"))
  4. {
  5. print("子弹在不断发射");
  6. }
  7. if (Input.GetButtonDown("Fire1"))
  8. {
  9. print("子弹发射");
  10. }
  11. if (Input.GetButtonUp("Fire1"))
  12. {
  13. print("停止发射");
  14. }
  15. }

四、常用到的一些方法

1、Input.GetAxis()方法,获取虚拟轴的值,返回值为float类型。值区间为[-1,1]

参数(“Horizontal”)表示左右的值,值为-1时,表示你在一直按下左方向对应的按键、设备类型为手柄时,表示你把推杆推到了最左边,为0时为默认位置,手柄中对应正中间,为1时与-1时对应的情况正好相反。

参数(“Vertical”)表示的是上下的值,与上述中左右情况类似。

通常这两个参数结合起来可用于实现,按下WASD/箭头按键/鼠标手柄,控制物体的前后左右移动等。

参数("Mouse X")返回鼠标左右移动的距离,值区间[-1,1]。

参数("Mouse Y")返回鼠标上下移动的距离,值区间[-1,1]。

实例:使用Input.GetAxis()方法实现,人物前后左右移动功能,移动鼠标控制镜头左右旋转。

  1. public class Player : MonoBehaviour
  2. {
  3. private CharacterController characterController;//角色控制器
  4. private float movespeed=5;//移动速度
  5. private float rotatespeed=2;//旋转速度
  6. private float rotatey = 0;//鼠标上下移动距离
  7. private float rotatex = 0;//鼠标左右移动距离
  8. private float maxangle = 45;//视角上下最大旋转角度
  9. private float minangle = -45; //视角上小最大旋转角度
  10. // Start is called before the first frame update
  11. void Start()
  12. {
  13. characterController = GetComponent<CharacterController>();
  14. }
  15. void Update()
  16. {
  17. float X = Input.GetAxis("Horizontal");//存储左右值
  18. float Y = Input.GetAxis("Vertical");//存储上下值
  19. Vector3 vector3 = new Vector3(X, 0, Y);//只修改x和z,y值为高度
  20. characterController.Move(characterController.transform.TransformDirection(vector3 * movespeed * Time.deltaTime));//调用角色控制器移动方法
  21. rotatex += Input.GetAxis("Mouse X") * rotatespeed;//获取鼠标左右移动距离
  22. rotatey -= Input.GetAxis("Mouse Y") * rotatespeed;//获取鼠标上下移动距离
  23. rotatey = Mathf.Clamp(rotatey, minangle,maxangle);//限制旋转角度值
  24. transform.localEulerAngles = new Vector3(0, rotatex, 0);//修改自身的左右旋转
  25. Camera.main.transform.localEulerAngles = new Vector3(rotatey,0, 0);//修改摄像机的上下旋转
  26. }
  27. }

2、Input.GetTouch()方法,主要用于移动端开发使用,此方法主要获取触摸屏幕的操作数据,首先通过Input.touchCount这个方法获取到手指触摸屏幕的次数,通过GetTouch方法传输触摸次数,调用Touch结构判断手指的状态来是否为设定的状态,符合的话则执行相关内容。具体使用可参考链接:官网

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/91811
推荐阅读
相关标签
  

闽ICP备14008679号