分类:Unity、C#、VS2015
创建日期:2016-04-21
一、简介
在桌面系统的游戏中,鼠标输入是最基本的输入方式之一。游戏很多操作都需要鼠标来完成,例如武器的瞄准和开火、菜单的单击、物体的拾取等。
鼠标输入的相关事件包括鼠标移动、按键的单击等。
Input类中和鼠标输入有关的方法和变量如下图所示:
在Unity中,鼠标位置用屏幕的像素坐标表示,屏幕左下角为坐标原点(0,0),右上角为(screen.width,screen.height),其中screen.width为屏幕分辨率的宽度,screen.height为屏幕分辨率的高度。
mousePosition的变量类型为Vector3,,其中x分量对应水平坐标,y分量对应垂直坐标,z分量始终为0。
CetMouseButtonDown、CetMouseButtonUp、CetMouseButton这3个方法需要传入参数来指定判断哪个鼠标按键,0对应左键,1对应右键,2对应中键。
二、基本用法示例
下面的代码演示了如何响应鼠标单击事件(0对应鼠标左键,1对应鼠标右键,2对应鼠标中键)。
void Update()
{
//按下鼠标左键
if(Input.GetMouseButtonDown(0))
{
//...
}
//按住鼠标左键
if(Input.GetMouseButton(0))
{
//...
}
//抬起鼠标左键
if(Input.GetMouseButtonUp(0))
{
//...
}
//按下鼠标右键
if(Input.GetMouseButtonDown(1))
{
//...
}
//按住鼠标右键
if(Input.GetMouseButton(1))
{
//...
}
//抬起鼠标右键
if(Input.GetMouseButtonUp(1))
{
//...
}
}
示例(Demo2_1_RotateExample.unity)
该例子演示如何根据鼠标移动距离来旋转模型进行观察。
将下面的脚本(RotateExample.cs文件)添加到要旋转的模型上,模型就会跟随鼠标的移动而旋转:
using UnityEngine; using System.Collections; public class RotateExample : MonoBehaviour { public float horizontalSpeed = 6.0f; public float verticalSpeed = 6.0f; void Update() { float h = horizontalSpeed * Input.GetAxis("Mouse X"); float v = verticalSpeed * Input.GetAxis("Mouse Y"); transform.Rotate(v, h, 0); } }
运行效果: