Unity实现模拟仿真飞机起飞降落效果_波波斯维奇的博客-程序员秘密_unity 无人机降落

技术标签: Unity实际项目开发流程展示  

Unity实现模拟仿真飞机起飞降落效果

前言

在最近的项目中,我实现了一个简单的飞机起飞、降落功能,运用了初中物理速度、加速度,以及Unity的Translate函数实现的。实现的难度一般,效果还可以,下面先说下飞机处于各个阶段的函数实现原理。

实现原理

1.起飞阶段
在这里插入图片描述
如图所示,飞机在起飞的时候有一个向前的速度V1,有一个向上的速度V0,V1与V0都是从0逐渐加大到一定的速度,当飞机上升到一定高度,就进入了第二个阶段:平飞阶段。
2.平飞阶段
在这里插入图片描述
如图所示,在平飞阶段,飞机没有了上升的速度,不再上升,且只有一个向前飞行的速度,这就是平飞阶段。
3.下降阶段
在这里插入图片描述
如图所示,在此阶段飞机有一个向下的速度,和一个向前的速度,且这两个速度越来越小,到了飞机的初始高度的时候,这两个速度分别为0,飞机也就停止了。

实现步骤

1.编写主要代码,主要代码如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace PlaneManager
{
    
    public enum thisPlaneState
    {
    
        Stop,
        BeginFly,
        Fly,
        EndFly
    }

    public class PlaneFlyTest : MonoBehaviour
    {
    
        //飞机的垂直速度
        float zSpeed = 0f;
        //战斗机的水平速度
        float xSpeed = 0f;
        //飞机垂直加速度
        float addZSpeed = 0.3f;
        //飞机的水平加速度
        float addXSpeed = 0.3f;
        //飞机的状态
        public thisPlaneState testPlaneState;
        // Use this for initialization
        void Start()
        {
    
            testPlaneState = thisPlaneState.Stop;
        }

        // Update is called once per frame
        void Update()
        {
    
            PlaneFly();
        }

        /// <summary>
        /// 开始起飞逻辑
        /// </summary>
        public void ToBeginFly()
        {
    
            testPlaneState = thisPlaneState.BeginFly;
        }

        public void ToEndFly()
        {
    
            testPlaneState = thisPlaneState.EndFly;
        }

        /// <summary>
        /// 飞机起飞
        /// </summary>
        void PlaneFly()
        {
    
            if (testPlaneState == thisPlaneState.BeginFly)
            {
    
                zSpeed += addZSpeed;
                xSpeed += addXSpeed;
                this.transform.Translate(Vector3.forward * xSpeed * Time.deltaTime);
                this.transform.Translate(Vector3.up * zSpeed * Time.deltaTime);
                if (this.transform.localPosition.y > 40.0f)
                {
    
                    testPlaneState = thisPlaneState.Fly;
                }
                ReStartPlane(this.transform,0f, 40.0f, -262.9f);
            }
            if (testPlaneState == thisPlaneState.Fly)
            {
    
                this.transform.Translate(Vector3.forward * xSpeed * Time.deltaTime);
                ReStartPlane(this.transform, 0f, 40.0f, -262.9f);
            }
            if (testPlaneState == thisPlaneState.EndFly)
            {
    
                zSpeed -= addZSpeed;
                xSpeed -= addXSpeed;
                this.transform.Translate(Vector3.forward * xSpeed * Time.deltaTime);
                this.transform.Translate(Vector3.down * zSpeed * Time.deltaTime);
                if (zSpeed < 0f && xSpeed < 0f)
                {
    
                    Debug.Log("123");
                    testPlaneState = thisPlaneState.Stop;
                }
                ReStartPlane(this.transform,0f, 40.0f, -262.9f);
            }
        }
        /// <summary>
        /// 重置飞机参数
        /// </summary>
        /// <param name="thisPlane">飞机Transform组件</param>
        /// <param name="posX">x坐标</param>
        /// <param name="posY">y坐标</param>
        /// <param name="posZ">z坐标</param>
        void ReStartPlane(Transform thisPlane,float posX,float posY,float posZ)
        {
    
            if (thisPlane.localPosition.z > 280f)
            {
    
                thisPlane.localPosition = new Vector3(posX,posY,posZ);
            }
        }
    }
}

这段代码实现了上述飞机起飞、降落的功能,主要实现思路是设置4个不同的枚举状态,使用枚举状态切换飞机的起飞、平飞、降落等效果。飞机的起飞、降落、平飞是使用Translate函数在Update中实现。
2.将此脚本挂载到飞机物体上,场景基本搭建如下图所示,在这里就不细说了。
在这里插入图片描述

实现效果

实现效果如下图所示:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_17367039/article/details/103992639

智能推荐

PySpark学习笔记(一)_超超人不会飞的博客-程序员秘密

一、环境准备windowspython3.+pycharm或者anacondaspark安装版(解压好之后)二、设置环境变量添加系统变量(设置自己的路径)1.sparkSPARK_HOME=D:/bigdatashare/spark-2.4.3-bin-hadoop2.7Path=D:/bigdatashare/spark-2.4.3-bin-hado...

2022-02-09大数据学习日志——PySpark——Spark框架概述_成长的小狮子的博客-程序员秘密

前言部分:知识回顾及课程目标[前言1]-大数据技术框架整个大数据技术框架学习,可以划分为4个阶段:离线分析、内存分析、实时存储和实时分析。# 第1部分、离线分析(Batch Processing) 分布式协作服务框架Zookeeper 大数据基础框架Hadoop(HDFS、MapReduce和YARN) 大数据数仓框架Hive 大数据辅助框架:FLUME、SQOOP、Oozie和Hue # 实战项目:亿品新零售# 第2部分、内存分析(In-Memory Processing)

HDU Problem 4857 逃生【拓扑排序+优先队列】_weixin_34320724的博客-程序员秘密

逃生Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4265Accepted Submission(s): 1185Problem Description糟糕的事情发生啦,现在大家都忙着逃命。但...

课堂笔记:EF的基本使用_懒羊羊♛的博客-程序员秘密_ef 使用

文章目录一、数据实体模型概述1、ORM技术的介绍2、EF建模二、数据模型更新与添加数据1、数据模型更新2、添加数据三、EF执行查询、更新与删除1、查询数据2、更新数据3、删除数据四、综合案例一、数据实体模型概述1、ORM技术的介绍2、EF建模模型的搭建关系到以后整个系统的扩展、性能方面的优化以及后期的维护。(1)概述模型提供了数据访问服务、数据验证服务等功能,所以数据建模成为使用模型的首要任务。EF支持Database First、Model First 和Code First三种模式的数据建

用R语言求置信区间_DawnJobs的博客-程序员秘密_r语言求置信区间

用R语言求置信区间是很方便的,而且很灵活,至少我觉得比spss好多了。如果你要求的只是95%的置信度的话,那么用一个很简单的命令就可以实现了首先,输入da=c(你的数据,用英文逗号分割),然后t.test(da),运行就能得到结果了。我的数据是newbomb t.test(newbomb)得到的结果如下 如果要求任意置信度下的置信区间的话,就需要自己

随便推点

PHP全站pjax影响收录,typecho实现pjax全站加速_阿橘要努力上清华的博客-程序员秘密

pushState + ajax = pjax 带来最直观的效果是整个网站变成单页应用。这样的效果将会极大的提升用户体验,并且可以减少https的请求的次数和内容。使用github上面的一个开源项目defunkt/jquery-pjax 可以很轻松的帮助我们实现pjax。需要具备基础的html&amp; javascript 知识。如果你连div和script标签仍然不认识,请忽略该篇文章。引入j...

android常用框架源码解析,android Fragmentation框架源码全面解析一_weixin_39539002的博客-程序员秘密

Fragmentaion框架是一个很优秀的框架,我们有2个项目都使用过,目前无不良反应,BUG呢还是有一些,不过不妨碍它的优秀。项目地址:https://github.com/YoKeyword/Fragmentation 点击打开链接 关注好几千,群众的眼光是雪亮的。它有啥作用呢?Fragment是可以让你的app纵享丝滑的设计,如果你的app想在现在基础上性能大幅度提高,并且占用内存降低...

Spring AOP实现原理_weixin_33908217的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

3W 字的 Spring Boot 超详细总结(建议收藏)_全栈开发者社区的博客-程序员秘密

点击上方[全栈开发者社区]→右上角[...]→[设为星标]作者|CHEN川http://www.jianshu.com/p/83693d3d0a65说明:前面有 4 个小节关于Sp...

食物链 (POJ-1182)_CoderSilence的博客-程序员秘密

点我跳转POJ - 1182Description动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 XY",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句

推荐文章

热门文章

相关标签