Unity 学习笔记 5.控制飞机飞行

目录

1.摄像机跟随的方法

2.鼠标按键响应

3.键盘按键响应

4.导入素材

5.让飞机向前飞

6.摄像机跟随飞机移动

7.鼠标控制飞机倾斜

8.键盘控制飞机飞行


下载源码 UnityPackage

1.摄像机跟随的方法


2.鼠标按键响应


3.键盘按键响应


4.导入素材

下载素材

步骤:

  1. 将下载好的素材拖进Unity窗口中,并分好文件夹装好

  2. 将 AirPlane -> Models -> airplane.fbx 拖进场景中

  3. 在 AirPlane -> Materials 中将彩色的材质赋给机身,黄色的赋给玻璃

  4. 在 TerrainData -> Prefabs 中将地形预制体拖入到场景中摆放好

摆放到下图效果:


5.让飞机向前飞

Translate() 方法使飞机向 z轴(前方)飞行

    void Update()
    {
        this.transform.Translate(0, 0, 0.1f);
    }


6.摄像机跟随飞机移动

https://yarcnhxqmdb.feishu.cn/docx/GMgYdzaIRo35Chxi9gGcZpOWnnb#T8CRdaHkroii7ex3mtrc5YVtnUe

步骤一:导入Standard的资源包

下载Standard的资源包

只选择 `CrossPlatformInput` 和 `Unity` 文件夹导入

步骤二:添加脚本

飞机对象拖进Target中,并调整Distance(距离)和Height(高度)


7.鼠标控制飞机倾斜

要点:

  1. 世界坐标转屏幕坐标

  2. Rotate()方法

    // 飞机的屏幕坐标轴
    Vector2 airPlaneScreenPos;

    void Start()
    {

    }

    void Update()
    {
        // 飞机向前飞行
        this.transform.Translate(0, 0, 0.05f);

        // 鼠标控制飞机倾斜
        if (Input.GetMouseButtonDown(0))
        {
            airPlaneScreenPos = Camera.main.WorldToScreenPoint(this.transform.position);
            // 点击了右边
            if (airPlaneScreenPos.x < Input.mousePosition.x)
            {
                this.transform.Rotate(0, 0, -5f);
            }
            else
            {
                this.transform.Rotate(0, 0, 5f);
            }
        }
    }


8.键盘控制飞机飞行

在之前摄像机挂载的脚本上,调整旋转和高度变化时的平滑值

    /// <summary>
    /// 旋转移动方法
    /// </summary>
    private void Movement()
    {
        if (Input.GetKey(KeyCode.W))
        {
            this.transform.Translate(0, 0, 0.05f);
        }
        if (Input.GetKey(KeyCode.S))
        {
            this.transform.Translate(0, 0, -0.05f);
        }
        if (Input.GetKey(KeyCode.A))
        {
            this.transform.Rotate(0, -1f, 0);
        }
        if (Input.GetKey(KeyCode.D))
        {
            this.transform.Rotate(0, 1f, 0);
        }
        if (Input.GetKey(KeyCode.Space))
        {
            this.transform.Translate(0, 0.05f, 0);
        }
        if (Input.GetKey(KeyCode.LeftControl))
        {
            this.transform.Translate(0, -0.05f, 0);
        }
    }

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值