当前位置: 首页 > news >正文

Unity飞行代码 超仿真 保姆级教程

本文使用Rigidbody控制飞机,基本不会穿模

效果

飞行效果

这是一条优雅的广告

如果你也在开发飞机大战等类型的飞行游戏,欢迎在主页搜索博文并参考。

搜索词:Unity游戏(Assault空对地打击)开发。

脚本编写

首先是完整代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class FlightCtrl : MonoBehaviour
{private float rotationSpeed = 5f;private float rollSpeed = 1f;private float minSpeed = 40f;private float maxSpeed = 200f;private float moveSpeed = 100f;private Rigidbody rb;private void Start(){rb = GetComponent<Rigidbody>();}private void FixedUpdate(){Move();Yaw();Pitch();Roll();}private void Move(){float move = Input.GetAxis("Vertical");moveSpeed += move;if (moveSpeed < minSpeed)moveSpeed = minSpeed;else if (moveSpeed > maxSpeed)moveSpeed = maxSpeed;rb.velocity = transform.forward * moveSpeed;}private void Yaw(){if (Input.GetMouseButton(0)){float yaw = Input.GetAxis("Mouse X");Vector3 newTorque = new Vector3(0f, yaw * pitchSpeed, 0f);rb.AddRelativeTorque(newTorque);}}private void Pitch(){if (Input.GetMouseButton(1)){float pitch = Input.GetAxis("Mouse Y");Vector3 newTorque = new Vector3(pitch * pitchSpeed, 0f, 0f);rb.AddRelativeTorque(newTorque);}}private void Roll(){float roll = Input.GetAxis("Horizontal"); // A, D/上, 下(-1, 1)Vector3 newTorque = new Vector3(0f, 0f, -roll * rollSpeed);rb.AddRelativeTorque(newTorque);}
}

分块解析

rotationSpeed:后续有用,请根据实际情况来调整数值,控制偏航和俯仰的转向速度。

rollSpeed:同理,控制横滚的速度。

moveSpeed:前进的速度,初始为100f。

min/maxSpeed:最低/高速。

rb:Rigidbody组件。

private float rotationSpeed = 5f;
private float rollSpeed = 1f;
private float minSpeed = 40f;
private float maxSpeed = 200f;private float moveSpeed = 100f;
private Rigidbody rb;

用处:获取Rigidbody组件,用rb表示。

private void Start()
{rb = GetComponent<Rigidbody>();
}

更新时:进行飞机的 前后移动、偏航、俯仰、横滚(如果需要操作)。

private void FixedUpdate()
{Move();Yaw();Pitch();Roll();
}

move:通常获取键盘的 W 和 S 键,或者方向键的上下箭头,W上(1)、S(下)(-1)。

加速或减速。

限制速度。

设置刚体速度:方向为物体的前方,速度为moveSpeed。

private void Move()
{float move = Input.GetAxis("Vertical");moveSpeed += move;if (moveSpeed < minSpeed)moveSpeed = minSpeed;else if (moveSpeed > maxSpeed)moveSpeed = maxSpeed;rb.velocity = transform.forward * moveSpeed;
}

当左键按下时,执行偏航操作(左右转动)。

获取鼠标的横向位置移动(左右移动)(左-1右1)

yaw * rotationSpeed,直接用yaw力太大或太小,需要乘一个数控制大小。

给刚体添加转向方向。

private void Yaw()
{if (Input.GetMouseButton(0)){float yaw = Input.GetAxis("Mouse X");Vector3 newTorque = new Vector3(0f, yaw * rotationSpeed, 0f);rb.AddRelativeTorque(newTorque);}
}

以此类推。

private void Pitch()
{if (Input.GetMouseButton(1)){float pitch = Input.GetAxis("Mouse Y");Vector3 newTorque = new Vector3(pitch * rotationSpeed, 0f, 0f);rb.AddRelativeTorque(newTorque);}
}private void Roll()
{float roll = Input.GetAxis("Horizontal"); // A, D/上, 下(-1, 1)Vector3 newTorque = new Vector3(0f, 0f, -roll * rollSpeed);rb.AddRelativeTorque(newTorque);
}

相关文章:

Unity飞行代码 超仿真 保姆级教程

本文使用Rigidbody控制飞机&#xff0c;基本不会穿模。 效果 飞行效果 这是一条优雅的广告 如果你也在开发飞机大战等类型的飞行游戏&#xff0c;欢迎在主页搜索博文并参考。 搜索词&#xff1a;Unity游戏(Assault空对地打击)开发。 脚本编写 首先是完整代码。 using System.Co…...

DeepSeek蒸馏模型:轻量化AI的演进与突破

目录 引言 一、知识蒸馏的技术逻辑与DeepSeek的实践 1.1 知识蒸馏的核心思想 1.2 DeepSeek的蒸馏架构设计 二、DeepSeek蒸馏模型的性能优势 2.1 效率与成本的革命性提升 2.2 性能保留的突破 2.3 场景适应性的扩展 三、应用场景与落地实践 3.1 智能客服系统的升级 3.2…...

使用 sunshine+moonlight 配置串流服务无法使用特殊键

最近了解到串流技术&#xff0c;使用的方案是 sunshine 为串流服务端&#xff0c;moonlight 为客户端&#xff0c;分别在 ipad&#xff0c;android&#xff0c;tv 端安装。 存在的问题 不管说什么平台都会有特殊键无法使用的问题&#xff0c;最初我发现在安卓电视&#xff0c…...

5.角色基础移动

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 角色的xyz轴与移动方向拌合输入轴值add movement inputget controller rotationget right vectorget forward vector 发现模型的旋转改变后&#xff0c;xyz轴也会改变&#xff0c;所以需要旋转值来计算xyz轴方向。 …...

单细胞-第四节 多样本数据分析,下游画图

文件在单细胞\5_GC_py\1_single_cell\2_plots.Rmd 1.细胞数量条形图 rm(list ls()) library(Seurat) load("seu.obj.Rdata")dat as.data.frame(table(Idents(seu.obj))) dat$label paste(dat$Var1,dat$Freq,sep ":") head(dat) library(ggplot2) lib…...

Linux的循环,bash的循环

Linux的循环,bash的循环 在 Linux 系统中&#xff0c;Bash 循环是最常用的循环实现方式&#xff08;Bash 是 Linux 默认的 Shell&#xff09;&#xff0c;但广义上“Linux 的循环”可能涉及其他 Shell 或编程语言的循环结构。以下是 Bash 循环的详细解析及其在 Linux 环境中的…...

【DeepSeek开发】Python实现股票数据可视化

代码&#xff1a; Github&#xff1a;Python实现股票数据可视化代码https://github.com/magolan2000/Data-visualization/tree/master 软件环境&#xff1a;PyCharm 2022.3.1 数据来源&#xff1a;akshare 最近DeepSeek可谓是热度不断&#xff0c;因此想评判一下DeepSeek的编程…...

华为小米vivo向上,苹果荣耀OPPO向下

日前&#xff0c;Counterpoint发布的手机销量月度报告显示&#xff0c;中国智能手机销量在2024年第四季度同比下降3.2%&#xff0c;成为2024年唯一出现同比下滑的季度。而对于各大智能手机品牌来说&#xff0c;他们的市场份额和格局也在悄然发生变化。 华为逆势向上 在2024年第…...

毕业设计:基于深度学习的高压线周边障碍物自动识别与监测系统

目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 卷积神经网络 1.2 目标检测算法 1.3 注意力机制 二、 数据集 2.1 数据采集 2.2 数据标注 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 3.2 结果分析 最后 前言 &#x1f4c5;大四是整个大学…...

el-table表格点击单元格实现编辑

使用 el-table 和 el-table-column 创建表格。在单元格的默认插槽中&#xff0c;使用 div 显示文本内容&#xff0c;单击时触发编辑功能。使用 el-input 组件在单元格中显示编辑框。data() 方法中定义了 tableData&#xff0c;tabClickIndex: null,tabClickLabel: ,用于判断是否…...

数据结构:时间复杂度

文章目录 为什么需要时间复杂度分析&#xff1f;一、大O表示法&#xff1a;复杂度的语言1.1 什么是大O&#xff1f;1.2 常见复杂度速查表 二、实战分析&#xff1a;解剖C语言代码2.1 循环结构的三重境界单层循环&#xff1a;线性时间双重循环&#xff1a;平方时间动态边界循环&…...

SPI(Serial Peripheral Interface)串行外围设备接口

SPI概述&#xff1a; SPI协议最初由Motorola公司&#xff08;现为NXP Semiconductors的一部分&#xff09;在20世纪80年代中期开发。最初是为了在其68000系列微控制器中实现高速、高效的串行通信。该协议旨在简化微控制器与外围设备之间的数据传输。 1980年代&#xff1a;SPI协…...

Java 8 Stream API

通过 Stream.of 方法直接传入多个元素构成一个流 String[] arr {“a”, “b”, “c”}; Stream.of(arr).forEach(System.out::println); Stream.of(“a”, “b”, “c”).forEach(System.out::println); Stream.of(1, 2, “a”).map(item -> item.getClass().getName()…...

亚博microros小车-原生ubuntu支持系列:21 颜色追踪

背景知识 这个测试例子用到了很多opencv的函数&#xff0c;举个例子。 #cv2.findContours函数来找到二值图像中的轮廓。#参数&#xff1a;#参数1&#xff1a;输 入的二值图像。通常是经过阈值处理后的图像&#xff0c;例如在颜色过滤之后生成的掩码。#参数2(cv2.RETR_EXTERNA…...

GESP6级语法知识(六):(动态规划算法(六)多重背包)

多重背包&#xff08;二维数组&#xff09; #include <iostream> using namespace std; #define N 1005 int Asd[N][N]; //Asd[i][j]表示前 i 个物品&#xff0c;背包容量是 j 的情况下的最大价值。 int Value[N], Vol[N], S[N];int main() {int n, Volume;cin &g…...

MySQL 事务实现原理( 详解 )

MySQL 主要是通过: 锁、Redo Log、Undo Log、MVCC来实现事务 事务的隔离性利用锁机制实现 原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。 Redo Log(重做日志)&#xff1a;记录事务对数据库的所有修改&#xff0c;在崩溃时恢复未提交的更改&#xff0c;保证事务…...

AI协助探索AI新构型自动化创新的技术实现

一、AI自进化架构的核心范式 1. 元代码生成与模块化重构 - 代码级自编程&#xff1a;基于神经架构搜索的强化学习框架&#xff0c;AI可通过生成元代码模板&#xff08;框架的抽象层定义&#xff09;自动组合功能模块。例如&#xff0c;使用注意力机制作为原子单元&#xff…...

九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)

九. Redis 持久化-RDB(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位) 文章目录 九. Redis 持久化-RDB(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位)1. RDB 概述2. RDB 持久化执行流程3. RDB 的详细配置4. RDB 备份&恢…...

mac连接linux服务器

1、mac连接linux服务器 # ssh -p 22 root192.168.1.152、mac指定密码连接linux服务器 (1) 先安装sshpass,下载后解压执行 ./configure && make && makeinstall https://sourceforge.net/projects/sshpass/ (2) 连接linux # sshpass -p \/\\\[\!\\wen12\$ s…...

oracle: 表分区>>范围分区,列表分区,散列分区/哈希分区,间隔分区,参考分区,组合分区,子分区/复合分区/组合分区

分区表 是将一个逻辑上的大表按照特定的规则划分为多个物理上的子表&#xff0c;这些子表称为分区。 分区可以基于不同的维度&#xff0c;如时间、数值范围、字符串值等&#xff0c;将数据分散存储在不同的分区 中&#xff0c;以提高数据管理的效率和查询性能&#xff0c;同时…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...