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控制飞机,基本不会穿模。 效果 飞行效果 这是一条优雅的广告 如果你也在开发飞机大战等类型的飞行游戏,欢迎在主页搜索博文并参考。 搜索词:Unity游戏(Assault空对地打击)开发。 脚本编写 首先是完整代码。 using System.Co…...
【自学笔记】Git的重点知识点-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Git基础知识Git高级操作与概念Git常用命令 总结 Git基础知识 Git简介 Git是一种分布式版本控制系统,用于记录文件内容的改动,便于开发者追踪…...
力扣73矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 输入:matrix [[0,1,2,0],[3,4,5,2],[…...
登录认证(5):过滤器:Filter
统一拦截 上文我们提到(登录认证(4):令牌技术),现在大部分项目都使用JWT令牌来进行会话跟踪,来完成登录功能。有了JWT令牌可以标识用户的登录状态,但是完整的登录逻辑如图所示&…...
python算法和数据结构刷题[1]:数组、矩阵、字符串
一画图二伪代码三写代码 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中)-CSDN博客 算法通关手册(LeetCode) | 算法通关手册(LeetCode) (itcharge.cn) 面试经典 150 题 - 学习计…...
详解u3d之AssetBundle
一.AssetBundle的概念 “AssetBundle”可以指两种不同但相关的东西。 1.1 AssetBundle指的是u3d在磁盘上生成的存放资源的目录 目录包含两种类型文件(下文简称AB包): 一个序列化文件,其中包含分解为各个对象并写入此单个文件的资源。资源文件&#x…...
接口测试通用测试用例
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。 测试的重点是检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 现在很多系统前后端架构是分离的,从安全层面来说,只依赖前段进行限…...
深入理解 C# 与.NET 框架
.NET学习资料 .NET学习资料 .NET学习资料 一、引言 在现代软件开发领域,C# 与.NET 框架是构建 Windows、Web、移动及云应用的强大工具。C# 作为一种面向对象的编程语言,而.NET 框架则是一个综合性的开发平台,它们紧密结合,为开…...
CSS 图像、媒体和表单元素的样式化指南
CSS 图像、媒体和表单元素的样式化指南 1. 替换元素:图像和视频1.1 调整图像大小示例代码:调整图像大小 1.2 使用 object-fit 控制图像显示示例代码:使用 object-fit 2. 布局中的替换元素示例代码:Grid 布局中的图像 3. 表单元素的…...
【BUUCTF杂项题】荷兰宽带数据泄露、九连环
一.荷兰宽带数据泄露 打开发现是一个.bin为后缀的二进制文件,因为提示宽带数据泄露,考虑是宽带路由器方向的隐写 补充:大多数现代路由器都可以让您备份一个文件路由器的配置文件,软件RouterPassView可以读取这个路由配置文件。 用…...
Shell特殊状态变量以及常用内置变量总结
目录 1. 特殊的状态变量 1.1 $?(上一个命令的退出状态) 1.2 $$(当前进程的 PID) 1.3 $!(后台进程的 PID) 1.4 $_(上一条命令的最后一个参数) 2.常用shell内置变量 2.1 echo&…...
蓝桥杯思维训练营(三)
文章目录 题目详解680.验证回文串 II30.魔塔游戏徒步旅行中的补给问题观光景点组合得分问题 题目详解 680.验证回文串 II 680.验证回文串 II 思路分析:这个题目的关键就是,按照正常来判断对应位置是否相等,如果不相等,那么就判…...
基于RTOS的STM32游戏机
1.游戏机的主要功能 所有游戏都来着B站JL单片机博主开源 这款游戏机具备存档与继续游戏功能,允许玩家在任何时候退出当前游戏并保存进度,以便日后随时并继续之前的冒险。不仅如此,游戏机还支持多任务处理,玩家可以在退出当前游戏…...
Leetcode 3440. Reschedule Meetings for Maximum Free Time II
Leetcode 3440. Reschedule Meetings for Maximum Free Time II 1. 解题思路2. 代码实现 题目链接:3440. Reschedule Meetings for Maximum Free Time II 1. 解题思路 这一题某种意义上来说甚至是上一题Leetcode 3439的简化版本(关于这一题的解答可以…...
计算机网络——三种交换技术
目录 电路交换——用于电话网络 电路交换的优点: 电路交换的缺点: 报文交换——用于电报网络 报文交换的优点: 报文交换的缺点: 分组交换——用于现代计算机网络 分组交换的优点: 分组交换的缺点 电路交换——…...
[ Spring ] Spring Boot Mybatis++ 2025
文章目录 StructureMyBatis Controller AbilitiesConfigure Plugins and RepositoriesApply Plugins and Add DependenciesMyBatis Spring PropertiesMyBatis ApplicationMyBatis BeansMyBatis MapperMyBatis Query Builder Structure this blog introduce 3 ways using mybat…...
【力扣题解】922. 按奇偶排序数组 II
😊博主目前也在学习,有错误欢迎指正😊 🌈保持热爱 奔赴星海🌈 文章目录 一、题目1、题目描述2、基础框架3、原题链接 二、解题报告1、思路分析2、代码详解 三、本题知识 一、题目 1、题目描述 给定一个非负整数数组 n…...
HTML5教程之标签(2)
HTML5 <b> 标签 实例 在HTML5中,你可以使用<b>标签来对某些文本实现加粗的效果,请参考下述的示例: <p>这是一个普通的文本- <b>这是一个加粗文本</b>。</p> 尝试一下 浏览器支持 所有主流浏览器都支…...
Verilog基础(一):基础元素
verilog基础 我先说,看了肯定会忘,但是重要的是这个过程,我们知道了概念,知道了以后在哪里查询。语法都是术,通用的概念是术。所以如果你有相关的软件编程经验,那么其实开启这个学习之旅,你会感受到熟悉,也会感受到别致。 入门 - 如何开始 欢迎来到二进制的世界,数字…...
Vue 图片引用方式详解:静态资源与动态路径访问
目录 前言1. 引用 public/ 目录2. assets/ 目录3. 远程服务器4. Vue Router 动态访问5. 总结6. 扩展(图片不显示) 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 在 Vue 开发中&#x…...
Qt网络相关
“ 所有生而孤独的人,葆有的天真 ” 为了⽀持跨平台, QT对⽹络编程的 API 也进⾏了重新封装。本章会上手一套基于QT的网络通信编写。 UDP Socket 在使用Qt进行网络编程前,需要在Qt项目中的.pro文件里添加对应的网络模块( network ). QT core gui net…...
深入剖析 HTML5 新特性:语义化标签和表单控件完全指南
系列文章目录 01-从零开始学 HTML:构建网页的基本框架与技巧 02-HTML常见文本标签解析:从基础到进阶的全面指南 03-HTML从入门到精通:链接与图像标签全解析 04-HTML 列表标签全解析:无序与有序列表的深度应用 05-HTML表格标签全面…...
使用 Axios 获取用户数据并渲染——个人信息设置
目录 1. HTML 部分(前端页面结构) HTML 结构解析: 2. JavaScript 部分(信息渲染逻辑) JavaScript 解析: 3. 完整流程 4. 总结 5. 适用场景 本文将介绍如何通过 Axios 从服务器获取用户信息࿰…...
生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)
今天小李哥将开启全新的技术分享系列,为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来,生成式 AI 安全市场正迅速发展。据 IDC 预测,到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元,年复合增长率超过 30%…...
pytorch基于FastText实现词嵌入
FastText 是 Facebook AI Research 提出的 改进版 Word2Vec,可以: ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码(基于中文语料),包含࿱…...
Docker技术相关学习三
一、Docker镜像仓库管理 1.docker仓库:用于存储和分发docker镜像的集中式存储库,开发者可以将自己创建的镜像推送到仓库中也可以从仓库中拉取所需要的镜像。 2.docker仓库: 公有仓库(docker hub):任何人都可…...
在Mac mini M4上部署DeepSeek R1本地大模型
在Mac mini M4上部署DeepSeek R1本地大模型 安装ollama 本地部署,我们可以通过Ollama来进行安装 Ollama 官方版:【点击前往】 Web UI 控制端【点击安装】 如何在MacOS上更换Ollama的模型位置 默认安装时,OLLAMA_MODELS 位置在"~/.o…...
实战:利用百度站长平台加速网站收录
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/33.html 利用百度站长平台加速网站收录是一个实战性很强的过程,以下是一些具体的步骤和策略: 一、了解百度站长平台 百度站长平台是百度为网站管理员提供的一系列工…...
2025蓝桥杯JAVA编程题练习Day2
1.大衣构造字符串 问题描述 已知对于一个由小写字母构成的字符串,每次操作可以选择一个索引,将该索引处的字符用三个相同的字符副本替换。 现有一长度为 NN 的字符串 UU,请帮助大衣构造一个最小长度的字符串 SS,使得经过任意次…...
SQL进阶实战技巧:如何分析浏览到下单各步骤转化率及流失用户数?
目录 0 问题描述 1 数据准备 2 问题分析 3 问题拓展 3.1 跳出率计算...
