输入事件(函数)
•OnMouseEnter鼠标移入:鼠标移入到当前Collider 时调用。
•OnMouseOver鼠标经过:鼠标经过当前Collider 时调用。
•OnMouseExit鼠标离开:鼠标离开当前Collider 时调用。
•OnMouseDown鼠标按下:鼠标按下当前Collider 时调用。
•OnMouseUp鼠标抬起:鼠标在当前Collider 上抬起时调用。
private void OnMouseDown()
{
Debug.Log("鼠标点击");
}//点击只限当前物体
Input 类
具有返回值,一般在update中监视输入(可以使用if调用)
获取鼠标输入
•当指定的鼠标按钮被按下时返回true
boolresult=Input.GetMouseButton(0);
•在用户按下指定鼠标按键的第一帧返回true
boolresult= Input. GetMouseButtonDown(0);
•在用户释放指定鼠标按键的第一帧返回true
boolresult= Input. GetMouseButtonUp(0);
•按钮值设定:
0对应左键,1对应右键,2对应中键。
获取键盘输入
•当通过名称指定的按键被用户按住时返回true
boolresult=Input.GetKey(KeyCode.A);
•当用户按下指定名称按键时的那一帧返回true
boolresult=Input. GetKeyDown(KeyCode.A);
•在用户释放给定名称按键的那一帧返回true
boolresult=Input. GetKeyUp(KeyCode.A);
void Update()
{
if(Input.GetMouseButtonDown(1))
{
this.transform.position = new Vector3(0,0,0);
}//当在点击屏幕右键时
if(Input.GetKey(KeyCode.A)&&Input.GetKeyDown(KeyCode.B))
{
Debug.Log("AB");
}//按住A同时按B
}
此外Input.GetAxis(" ")函数可以返回对应虚拟键是否按下(若按下,返回值从0到1或-1,逐渐变化)
鼠标左右移动时,使物体(摄像机)跟随鼠标转动
public float rotateSpeed=1;
void FixedUpdate()
{
//鼠标左右移动
float x = Input.GetAxis("Mouse X");
float y = Input.GetAxis("Mouse Y");
if (x!=0 || y!=0)
RotateView(x, y);
}
private void RotateView(float x, float y)
{
x *= rotateSpeed;
y *= rotateSpeed;
this.transform.Rotate(0, x, 0, Space.World);
//左右旋转,需要沿世界坐标系的Y轴
this.transform.Rotate(-y, 0, 0);
}
当w,s,a,d,或上下左右箭头时,物体前后左右运动
public float moveSpeed = 20;
void Update()
{
//按下a 左箭头 或 按下d 右箭头
float hor = Input.GetAxis("Horizontal");
//按下w 上箭头 或按下s 下箭头
float ver = Input.GetAxis("Vertical");
if (hor != 0 || ver != 0)
Movement(hor,ver);
}
private void Movement(float hor,float ver)
{
hor *= moveSpeed * Time.deltaTime;
ver *= moveSpeed * Time.deltaTime;
this.transform.Translate(hor, 0, ver);
}