当前位置:   article > 正文

Unity基础(07)—— 鼠标、键盘输入_unity小键盘输入

unity小键盘输入

一、Unity 通过键盘进行输入字符

Input 类,包装了输入功能,一般在 Update 中来检测用户的输入。

1、获取鼠标的输入,

  1. // 0 对应左键,1 对应右键,2 对应中键。
  2. bool result00 = Input.GetMouseButton(0);
  3. bool result01 = Input.GetMouseButtonDown(1);
  4. bool result02 = Input.GetMouseButtonUp(2);

2、接受键盘输入的字符

  1. void Update () {
  2. if (Input.GetKey(KeyCode.M))
  3. {
  4. // 长按事件监听某一按键是否处于一直按下的状态,通过Input.GetKey( )来判断键盘中某一按键是否被一直按着。
  5. // 当按下该键的时候,会在按下的时间内,按帧来进行刷新。
  6. Debug.Log("You have click the M key");
  7. }
  8. if (Input.GetKeyDown(KeyCode.A))
  9. {
  10. // GetKeyDown( )方法将按键值作为参数,监听此按键是否被按下。按下返回true,否者返回false。
  11. Debug.Log("You click the A");
  12. }
  13. if (Input.GetKeyUp(KeyCode.A))
  14. {
  15. // 当该按键被松开的时候,返回true
  16. Debug.Log("Click the A ");
  17. }
  18. }

二、实例:

1、通过鼠标右键实现相机的镜头缩放。

首先将控制的脚本挂在相机上

  1. public class sc01 : MonoBehaviour
  2. {
  3. public bool isFar = true;
  4. public Camera ce;
  5. private void Start()
  6. {
  7. ce = GetComponent<Camera>();
  8. }
  9. // Update is called once per frame
  10. void Update ()
  11. {
  12. //*************** 方式一:一帧之内完成 ***************
  13. if (Input.GetMouseButtonDown(1))
  14. {
  15. if (isFar)
  16. {
  17. ce.fieldOfView = 60;
  18. }
  19. else
  20. {
  21. ce.fieldOfView = 20;
  22. }
  23. isFar = !isFar;
  24. }
  25. }
  26. private void Update()
  27. {
  28. //************* 方式二:多帧逐渐变换匀速 ***************
  29. if (Input.GetMouseButtonDown(1))
  30. {
  31. //按下鼠标右键时执行一帧
  32. isFar = !isFar;
  33. }
  34. // 每帧执行一次
  35. if (isFar)
  36. {
  37. if (ce.fieldOfView < 60)
  38. {
  39. ce.fieldOfView += 1;
  40. if (Mathf.Abs(ce.fieldOfView - 60) < 0.2)
  41. {
  42. ce.fieldOfView = 60;
  43. }
  44. }
  45. }
  46. else
  47. {
  48. if (ce.fieldOfView > 20)
  49. {
  50. ce.fieldOfView -= 1;
  51. if (Mathf.Abs(ce.fieldOfView - 20) < 0.2)
  52. {
  53. ce.fieldOfView = 20;
  54. }
  55. }
  56. }
  57. }
  58. //************* 方式三:变速,先快后慢,并设置多个缩放等级 ***************
  59. public float[] zoomLevel; //当类型一致,个数不一致时,一般定义数组来进行处理,数组大小不定
  60. private int index;
  61. private void Update()
  62. {
  63. if (Input.GetMouseButtonDown(1))
  64. {
  65. //按下鼠标右键时执行一帧
  66. index = (index < (zoomLevel.Length - 1)) ? index + 1 : 0;
  67. }
  68. // 每帧执行一次
  69. ce.fieldOfView = Mathf.Lerp(ce.fieldOfView, zoomLevel[index], 0.1f);
  70. if (Mathf.Abs(ce.fieldOfView - zoomLevel[index]) < 0.2f)
  71. {
  72. ce.fieldOfView = zoomLevel[index];
  73. }
  74. }
  75. }

2、鼠标左右上下移动时,物体也左右上下移动

  1. public class sc02 : MonoBehaviour
  2. {
  3. // Update is called once per frame
  4. void FixedUpdate ()
  5. {
  6. // 鼠标左右移动
  7. float x = Input.GetAxis("Mouse X");
  8. float y = Input.GetAxis("Mouse Y");
  9. Demo2(x, y);
  10. }
  11. private void Demo2(float x, float y)
  12. {
  13. transform.Rotate(-y, 0, 0);
  14. transform.Rotate(0, x, 0,Space.World);
  15. Debug.Log("x = " + x);
  16. Debug.Log("y = " + y);
  17. }
  18. }

 

 

 

 

 

 


参考资料:

[1]  输入与控制——键盘事件

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

闽ICP备14008679号