1.鼠标在屏幕上的位置
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson11 : MonoBehaviour
{
void Update()
{
//屏幕的左下角是(0,0)点(往右是x轴正方向,往上是y轴正方向)
//返回值是Vector3,只有x和y有值,z始终为0
print(Input.mousePosition);
}
}
2.检测鼠标输入
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson11 : MonoBehaviour
{
void Update()
{
//1.鼠标按下的一瞬间 进入
// 只有按下的一瞬间 进入一次
// 参数:0-左键,1-右键,2-中键
if (Input.GetMouseButtonDown(1))
{
print("按下了鼠标右键");
}
//2.鼠标抬起的一瞬间 进入
// 只有抬起的一瞬间 进入一次
// 参数:0-左键,1-右键,2-中键
if (Input.GetMouseButtonUp(0))
{
print("抬起了鼠标左键");
}
//3.鼠标长按 进入
// 当按住按键不放时,会一直进入
// 参数:0-左键,1-右键,2-中键
if (Input.GetMouseButton(0))
{
print("长按");
}
//4.鼠标滚轮滚动
// 此API可以得到当前鼠标滚轮的状态
// 返回值是Vector2,滚轮滚动时 会改变Vector2的y的值
// y:-1是往上滚、0是不滚、1是往下滚
print(Input.mouseScrollDelta);
}
}
3.检测键盘输入
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson11 : MonoBehaviour
{
void Update()
{
//1.键盘按下
if (Input.GetKeyDown(KeyCode.W))
{
print("按下了W");
}
// 传入字符串的重载 (用的少)
// 注意 必须传入小写字母,大写会报错
if (Input.GetKeyDown("a"))
{
print("按下了A");
}
//2.键盘抬起
if (Input.GetKeyUp(KeyCode.W))
{
print("抬起了W");
}
//3.键盘长按
if (Input.GetKey(KeyCode.W))
{
print("长按W,玩家往前走");
}
}
}
4.检测默认轴输入
Unity提供的 更方便的 控制对象的 位移和旋转的解决方案
这个Axis是可以自定义的:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson11 : MonoBehaviour
{
void Update()
{
//1.键盘AD按下时,返回 -1 ~ 1之间的值
//得到的这个值 就是左右方向,可以通过它来控制对象左右移动 或 左右旋转
print(Input.GetAxis("Horizontal"));
//2.键盘SW按下时,返回 -1 ~ 1之间的值
//得到的这个值 就是上下方向,可以通过它来控制对象上下移动 或 左右旋转
print(Input.GetAxis("Vertical"));
//3.鼠标水平移动时,返回 -1 ~ 1之间的值
print(Input.GetAxis("Mouse X"));
//4.鼠标垂直移动时,返回 -1 ~ 1之间的值
print(Input.GetAxis("Mouse Y"));
//补充:Input.GetAxisRaw方法
// 它和GetAxis使用方法相同
// 只不过 他的返回值只会有-1 0 1这三个数,没有中间的过度值
}
}
5.其它的补充
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson11 : MonoBehaviour
{
void Update()
{
//1.是否有任意键或鼠标长按
if (Input.anyKey)
{
print("有任意键正在长按");
}
//2.是否有任意键或鼠标被按下
if (Input.anyKeyDown)
{
print("有任意一个键被按下了");
}
//3.得到这一帧的键盘输入
print(Input.inputString);
}
}
6.手柄输入相关
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson11 : MonoBehaviour
{
void Update()
{
//1.得到连接的手柄的所有按钮名字
// 返回一个string数组
string[] strs = Input.GetJoystickNames();
//2.手柄某一个按键被按下
if (Input.GetButtonDown("Jump"))
{
}
//3.手柄某一个按键抬起
if (Input.GetButtonUp("Jump"))
{
}
//4.手柄某一个按键长按
if (Input.GetButton("Jump"))
{
}
}
}
7.移动设备相关
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson11 : MonoBehaviour
{
void Update()
{
//1.移动设备触摸
if (Input.touchCount > 0)
{
//得到第一根手指的触摸
Touch t1 = Input.touches[0];
//得到触摸的位置
print(t1.position);
//得到相对上次位置的变化
print(t1.deltaPosition);
}
//2.是否启用多点触控
// true开启、false关闭
Input.multiTouchEnabled = true;
//3.陀螺仪(重力感应)
// 是否开启陀螺仪(必须开启,才能正常使用)
Input.gyro.enabled = true;
// 得到重力加速度向量
print(Input.gyro.gravity);
// 得到旋转速度
print(Input.gyro.rotationRate);
// 得到陀螺仪当前旋转的四元数
// 比如 用这个角度信息来控制场景上的一个3D物体受重力影响
// 手机怎么动 它就怎么动
print(Input.gyro.attitude);
}
}