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…...
DeepSeek蒸馏模型:轻量化AI的演进与突破
目录 引言 一、知识蒸馏的技术逻辑与DeepSeek的实践 1.1 知识蒸馏的核心思想 1.2 DeepSeek的蒸馏架构设计 二、DeepSeek蒸馏模型的性能优势 2.1 效率与成本的革命性提升 2.2 性能保留的突破 2.3 场景适应性的扩展 三、应用场景与落地实践 3.1 智能客服系统的升级 3.2…...
使用 sunshine+moonlight 配置串流服务无法使用特殊键
最近了解到串流技术,使用的方案是 sunshine 为串流服务端,moonlight 为客户端,分别在 ipad,android,tv 端安装。 存在的问题 不管说什么平台都会有特殊键无法使用的问题,最初我发现在安卓电视,…...
5.角色基础移动
能帮到你的话,就给个赞吧 😘 文章目录 角色的xyz轴与移动方向拌合输入轴值add movement inputget controller rotationget right vectorget forward vector 发现模型的旋转改变后,xyz轴也会改变,所以需要旋转值来计算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 系统中,Bash 循环是最常用的循环实现方式(Bash 是 Linux 默认的 Shell),但广义上“Linux 的循环”可能涉及其他 Shell 或编程语言的循环结构。以下是 Bash 循环的详细解析及其在 Linux 环境中的…...
【DeepSeek开发】Python实现股票数据可视化
代码: Github:Python实现股票数据可视化代码https://github.com/magolan2000/Data-visualization/tree/master 软件环境:PyCharm 2022.3.1 数据来源:akshare 最近DeepSeek可谓是热度不断,因此想评判一下DeepSeek的编程…...
华为小米vivo向上,苹果荣耀OPPO向下
日前,Counterpoint发布的手机销量月度报告显示,中国智能手机销量在2024年第四季度同比下降3.2%,成为2024年唯一出现同比下滑的季度。而对于各大智能手机品牌来说,他们的市场份额和格局也在悄然发生变化。 华为逆势向上 在2024年第…...
毕业设计:基于深度学习的高压线周边障碍物自动识别与监测系统
目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 卷积神经网络 1.2 目标检测算法 1.3 注意力机制 二、 数据集 2.1 数据采集 2.2 数据标注 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 3.2 结果分析 最后 前言 📅大四是整个大学…...
el-table表格点击单元格实现编辑
使用 el-table 和 el-table-column 创建表格。在单元格的默认插槽中,使用 div 显示文本内容,单击时触发编辑功能。使用 el-input 组件在单元格中显示编辑框。data() 方法中定义了 tableData,tabClickIndex: null,tabClickLabel: ,用于判断是否…...
数据结构:时间复杂度
文章目录 为什么需要时间复杂度分析?一、大O表示法:复杂度的语言1.1 什么是大O?1.2 常见复杂度速查表 二、实战分析:解剖C语言代码2.1 循环结构的三重境界单层循环:线性时间双重循环:平方时间动态边界循环&…...
SPI(Serial Peripheral Interface)串行外围设备接口
SPI概述: SPI协议最初由Motorola公司(现为NXP Semiconductors的一部分)在20世纪80年代中期开发。最初是为了在其68000系列微控制器中实现高速、高效的串行通信。该协议旨在简化微控制器与外围设备之间的数据传输。 1980年代: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的函数,举个例子。 #cv2.findContours函数来找到二值图像中的轮廓。#参数:#参数1:输 入的二值图像。通常是经过阈值处理后的图像,例如在颜色过滤之后生成的掩码。#参数2(cv2.RETR_EXTERNA…...
GESP6级语法知识(六):(动态规划算法(六)多重背包)
多重背包(二维数组) #include <iostream> using namespace std; #define N 1005 int Asd[N][N]; //Asd[i][j]表示前 i 个物品,背包容量是 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(重做日志):记录事务对数据库的所有修改,在崩溃时恢复未提交的更改,保证事务…...
AI协助探索AI新构型自动化创新的技术实现
一、AI自进化架构的核心范式 1. 元代码生成与模块化重构 - 代码级自编程:基于神经架构搜索的强化学习框架,AI可通过生成元代码模板(框架的抽象层定义)自动组合功能模块。例如,使用注意力机制作为原子单元ÿ…...
九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)
九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位) 文章目录 九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)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: 表分区>>范围分区,列表分区,散列分区/哈希分区,间隔分区,参考分区,组合分区,子分区/复合分区/组合分区
分区表 是将一个逻辑上的大表按照特定的规则划分为多个物理上的子表,这些子表称为分区。 分区可以基于不同的维度,如时间、数值范围、字符串值等,将数据分散存储在不同的分区 中,以提高数据管理的效率和查询性能,同时…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
