【Unity】7.2 鼠标输入

分类:Unity、C#、VS2015

创建日期:2016-04-21

一、简介

在桌面系统的游戏中,鼠标输入是最基本的输入方式之一。游戏很多操作都需要鼠标来完成,例如武器的瞄准和开火、菜单的单击、物体的拾取等。

鼠标输入的相关事件包括鼠标移动、按键的单击等。

Input类中和鼠标输入有关的方法和变量如下图所示:

image

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

运行效果:

image
posted @ 2016-04-21 05:39  rainmj  阅读(988)  评论(0编辑  收藏  举报