Unity实现多旋翼无人机的模拟飞行(物理引擎) 您所在的位置:网站首页 maya螺旋桨制作 Unity实现多旋翼无人机的模拟飞行(物理引擎)

Unity实现多旋翼无人机的模拟飞行(物理引擎)

2023-12-03 07:40| 来源: 网络整理| 查看: 265

内容简介

最近在用Unity实现无人机的模拟飞行,但发现站里基本没有完整介绍如何实现该功能的博客,因时间紧迫,就自己简单做了一个仿真(不是完全按照现实物理情景来做,即通过各个螺旋桨旋转产生力带动机体飞行)。下面我会简述完全按现实物理情景实现模拟飞行,并详细描述我自己做的模拟飞行(不完全仿真),给各位提供参考。

现实物理情景的实现——简述(以四旋翼无人机为例)

因为我没有实现1:1仿真,所以这里只介绍思路,希望能给到读者一点启发。

构建一个四旋翼无人机模型(可以网上下载。或用Maya等建一个) 将模型设置为Rigidbody和BoxCollider(即实现一个物理模型,记得要先Create一个Plane承住你的模型) 给四个螺旋桨各写一个脚本,各产生一个向上的力 通过螺旋桨产生的升力即可带动模型飞行,通过控制不同螺旋桨产生升力的不同,即可实现无人机的各种飞行姿态(这步是最难的,也最花时间) 简化物理情景的实现——详述(以四旋翼无人机为例)

背景:上面的现实模拟最麻烦之处在于要对四个螺旋桨(电机)实现控制并达到平衡,太麻烦了,调试要很久,网上又没有现成的代码(至少免费的我没有发现)。所以我自己简化了一下模型,并实现所需功能。 思路:简化模型的区别在于我不用四个螺旋桨(电机)来各自产生升力,形成合力来带动机体。而是直接将力加在机身上,即跳过了前面那一步,直接用合力来实现无人机的飞行。 实现步骤:以下为实现步骤,考虑到网上好像没有相关的博客和视频教程,我会尽量详细来叙述,所以会有点多。

1.导入一个无人机模型,并给整体设置Rigidbody和BoxCollider(注意最好Collider设成和模型差不多大)。 在这里插入图片描述 2. 写脚本1(Plane_Text)(总共需要写两个脚本,记为脚本1和脚本2),脚本1使其产生力带动机体运动

using System.Collections; using System.Collections.Generic; using System.IO.Pipes; using System.Runtime.CompilerServices; using System.Security.Cryptography.X509Certificates; using UnityEngine; using UnityEngine.UI; public class Plane_Text : MonoBehaviour { private Rigidbody m_Rigidbody; public float speed = 5; public float angle = 0; private float x, y, z; public Transform target; void Start() { m_Rigidbody = gameObject.GetComponent();//获取组件 } void Update() { var vec = new Vector3(x, y, z); m_Rigidbody.AddForce(vec * speed, ForceMode.Force);//无人机朝vec向量方向运动,至于vec的取值由下面各个按键确定 /*******无人机飞机控制*********/ /*******W加油门(上升);S减油门(下降);A左转;D右转*********/ if (Input.GetKeyUp(KeyCode.W)) speed++; if (Input.GetKeyDown(KeyCode.W)) x = 0;y =


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有