Uinty 第一次人称太空移动和旋转(键鼠操作)

来源:互联网 发布:gddr5x和hbm2知乎 编辑:程序博客网 时间:2024/05/17 08:31

本人Unity新人,此博客只是为了做笔记和分享,不对的地方请大伽指正

参照一些太空游戏,一般控制是:

鼠标左右,以自身Y轴进行旋转

鼠标上下,以自身X轴进行旋转

键盘AD,以自身Z轴进行旋转

键盘WS,控制物体前后移动

相关代码:

放进到Update里:

 void RotateView()   //鼠标控制旋转
    {
        //Input.GetAxis("Mouse X"); //获取鼠标水平方向
        //Input.GetAxis("Mouse Y"); //获取鼠标垂直方向
        transform.RotateAround(transform.up, rotateSpeed * Input.GetAxis("Mouse X"));//以自身Y轴旋转,速度是鼠标的X轴数值*一个速度变量值
        transform.RotateAround(transform.right, -rotateSpeed * Input.GetAxis("Mouse Y"));
    }

void Move()     //移动
    {
        if (Input.GetKey(KeyCode.W))
        {
            if (Input.GetKeyDown(KeyCode.LeftShift))//按下W+左边Shift按键,则加速移动
            {
                moveSpeed = 6f;
            }
            if (Input.GetKeyUp(KeyCode.LeftShift)) //松开左边Shift按键,则恢复原来速度
            {
                moveSpeed = 3f;
            }
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.S))
        {
            transform.Translate(Vector3.back * moveSpeed/2 * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.A)) //按下D以自身旋转,旋转速度是自定义速度的1/4
        {
            transform.RotateAround(transform.forward, -rotateSpeed/4);
        }
        if (Input.GetKey(KeyCode.D))
        {
            transform.RotateAround(transform.forward, rotateSpeed/4);
        }
        if (Input.GetKeyDown(KeyCode.Escape)) //按ESC退出游戏(发布后才能看出效果)
        {
            Application.Quit();
        }

1 0
原创粉丝点击