Unity脚本 输入事件详细

输入事件(函数)

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

你可能感兴趣的:(Unity脚本 输入事件详细)