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

Unity3d 游戏暂停(timeScale=0)引起的deltaTime关联的系列问题解决

问题描述

游戏暂停的功能是通过设置timeScale=0实现的,不过在暂停游戏的时候,需要对角色进行预览和设置,为了实现这个功能,是通过鼠标控制相机的操作,为了使相机的操作丝滑,获取鼠标操作系数乘以Time.deltaTime 了,同时对数值进行了平滑操作(Mathf.SmoothDamp和Mathf.SmoothDampAngle),采用了具体代码可以参考https://blog.csdn.net/qq_33789001/article/details/120551521。
代码片段如下:

//根据鼠标系数获取距离目标值
tdis -= Input.GetAxis("Mouse ScrollWheel") * disMoveSpd * Time.deltaTime;
//平滑处理距离值
dis = Mathf.SmoothDamp(dis, tdis, ref zVel, 0.5f);//根据鼠标系数获取旋转目标值
troty = troty + Input.GetAxis("Mouse X") * XSens * Time.deltaTime;
trotx = trotx + Input.GetAxis("Mouse Y") * YSens * Time.deltaTime;
//平滑处理旋转值
rotx = Mathf.SmoothDampAngle(rotx, trotx, ref RxVel, 0.3f);  
roty = Mathf.SmoothDampAngle(roty, troty, ref RyVel, 0.3f);

当游戏暂停后(timeScale=0),Time.deltaTime的数值都变成0了。

解决办法

解决的思路就是在暂停时不用Time.deltaTime,而是通过固定帧率计算出这个值。比如假设游戏是60帧,那么数值就是1/60 = 0.0167f,这个数值是根据帧率越大,而值越小的,120帧就是0.008333。那么我就按60帧手动赋值0.0167f。代码修改如下:

//根据鼠标系数获取距离目标值
tdis -= Input.GetAxis("Mouse ScrollWheel") * disMoveSpd *  0.0167f;
//根据鼠标系数获取旋转目标值
troty = troty + Input.GetAxis("Mouse X") * XSens *  0.0167f;
trotx = trotx + Input.GetAxis("Mouse Y") * YSens *  0.0167f;

这样能解决Time.deltaTime为0,鼠标的操作都失效的问题。
然而,运行后发现部分操作还是会失效,而且操作过程中会出现这样的报错:

is not valid. Input position is { NaN, NaN, NaN }.

经过研究发现 Mathf.SmoothDampAngle和Mathf.SmoothDamp两个函数与Time.deltaTime仍有关联,他们的说明如下
在这里插入图片描述
在这里插入图片描述

它们都有deltaTime参数,这个时间是上次调用这个函数的到这次调用的间隔时间,默认为Time.deltaTime。因为之前调用这两个函数都没有进行这个传参默认是Time.deltaTime这种情况下为0。所以在这种情况下还需要传入maxSpeed和deltaTime参数。经过修改如下:

//平滑处理距离值
dis = Mathf.SmoothDamp(dis, tdis, ref zVel, 0.5f, 2, 0.0167f);//平滑处理旋转值
rotx = Mathf.SmoothDampAngle(rotx, trotx, ref RxVel, 0.3f, 2, 0.0167f);  
roty = Mathf.SmoothDampAngle(roty, troty, ref RyVel, 0.3f, 2, 0.0167f);

做了上述修改可以正常操作:
在这里插入图片描述

相关文章:

Unity3d 游戏暂停(timeScale=0)引起的deltaTime关联的系列问题解决

问题描述 游戏暂停的功能是通过设置timeScale0实现的,不过在暂停游戏的时候,需要对角色进行预览和设置,为了实现这个功能,是通过鼠标控制相机的操作,为了使相机的操作丝滑,获取鼠标操作系数乘以Time.delta…...

服务端代码编写中MySql大小写在Java中报错问题解决

报错信息: 原因:MySql和Java变量大小写产生的冲突。 经过查阅各个博客等,得出浅显结论(不一定对):MySql大小写不敏感,Java大小写敏感,当Javabean转为MySql数据库表时,Ja…...

CRMEB 多店商品详情页装修说明

一、功能介绍 商家可调整商品详情各板块样式,可根据不同的需求开启或关闭单独的板块 二、操作流程 装修 > 商品详情 三、功能说明 1、商品信息 可控制商品详情页面商品信息的显示与隐藏 2、会员信息,排行榜 控制商品详情页面会员信息及排行榜的…...

Redis-使用 jedis 操作数据

文章目录 1、Jedis简介2、环境准备3、创建maven普通项目,导入如下依赖4、测试JAVA程序和Redis之间的通信 1、Jedis简介 "Jedis" 通常是作为 "Java Redis" 的缩写或简称来理解的。Java Embedded Data Structures Interface 表示 Java嵌入式数据结构接口 2、…...

简说PIP换源

概述 PIP(Python Package Installer)是 Python 的包管理工具,用于安装和管理 Python 包。默认情况下,PIP 从 Python 官方的包仓库(即 PyPI)下载和安装包。然而,由于网络原因,访问官…...

django学习入门系列之第三点《CSS基础样式介绍2》

文章目录 文字对齐方式外边距内边距往期回顾 文字对齐方式 水平对齐方式 text-align: center;垂直对齐方式 /* 注意&#xff0c;这个只能是一行来居中 */ line-height:/*长度*/ ;样例 <!DOCTYPE html> <html lang"en"> <head><meta charset…...

分布式光纤测温DTS在工程现场中稳定性与可靠性如何?

20年前&#xff0c;分布式光纤测温(Distributed Temperature Sensing&#xff0c;DTS)技术的发展尚不成熟&#xff0c;设备成本高昂&#xff0c;其稳定性与可靠性也存在一定问题。然而&#xff0c;经过二十多年的不断发展与创新&#xff0c;DTS技术在工程现场应用中取得了显著进…...

PHP多线程模块parallel的编译安装和多线程编程演示

从PHP7开始&#xff0c;多线程编原有的pthreads已经不在维护&#xff0c;而是使用parallel替代。 由于是新的模块&#xff0c;样例代码很少&#xff0c;这里总结一个简单的代码和详细的备注供大家参考。 编译和安装 parallel需要启用ZTS&#xff08;Zend Thread Safety&…...

记录grid布局属性

grid布局 分为容器和项目元素 容器属性 #container{display:grid;grid-template-columns:100px 100px 100px;/* 1fr 表示比例为占1份 */grid-template-columns:1fr 100px 1fr;/*100px为1列,自动填充,容器宽度不足则换行*/grid-template-columns:repeat(auto-fill,100px);/* …...

12.爬虫---PyMysql安装与使用

12.PyMysql安装与使用 1.安装 PyMySQL2.使用PyMySQL2.1创建数据表2.2连接数据库2.3增加数据2.4修改数据2.5查询数据2.6删除数据2.7关闭连接 3.总结 MySQL 安装可以看这篇文章MySql 安装与使用&#xff08;非常详细&#xff09; 1.安装 PyMySQL PyMySQL是Python中用于连接MySQL…...

VS2022遇到的两个问题

问题一&#xff1a;找不到定义的头文件 别的博主说是&#xff1a;在属性页里面进行改写&#xff0c;改成是&#xff0c;我试过之后并不行&#xff1b; 解决思路&#xff1a;但其实在右边视图里面找到你自己定义的头文件加到你运行文件中就行&#xff1b;因为程序就只有一个入口…...

【Android14 ShellTransitions】(六)SyncGroup完成

这一节的内容在WMCore中&#xff0c;回想我们的场景&#xff0c;是在Launcher启动某一个App&#xff0c;那么参与动画的就是该App对应Task&#xff08;OPEN&#xff09;&#xff0c;以及Launcher App对应的Task&#xff08;TO_BACK&#xff09;。在确定了动画的参与者后&#x…...

技术管理转型之战:决策之道-管理中的智慧与策略

文章目录 引言一、决策的重要性二、常见的决策方式1. 理性决策&#xff08;Rational Decision Making&#xff09;2. 有限理性&#xff08;Bounded Rationality&#xff09;3. 直觉决策&#xff08;Intuitive Decision Making&#xff09;4. 循证管理&#xff08;Evidence-Base…...

Shell脚本:条件语句(if、case)

目录 硬编码 硬编码的缺点 条件判断 $? 命令行语句 判断指定目录是否存在 判断指定文件是否存在 判断指定对象是否存在 表达式形式语句 判断对象是否存在 判断对象是否有权限 与、或、非 运算 与运算 或运算 非运算 比较大小 判断磁盘利用率实验步骤 字符串…...

在Linux上为Windows目标配置Qt交叉编译

问题描述 我想使用Linux x86_64主机为Windows x86_64目标交叉编译Qt库&#xff08;最终也包括我的应用程序&#xff09;。我觉得自己已经接近成功了&#xff0c;但可能对整个过程有一些基本的误解。 我从在我的Fedora机器上安装所有mingw包开始&#xff0c;并修改了win32-g的…...

Introduction to linear optimization 第 2 章课后题答案 11-15

线性规划导论 Introduction to linear optimization (Dimitris Bertsimas and John N. Tsitsiklis, Athena Scientific, 1997)&#xff0c; 这本书的课后题答案我整理成了一个 Jupyter book&#xff0c;发布在网址&#xff1a; https://robinchen121.github.io/manual-introdu…...

Java——包

一、包 1、简要介绍 在Java编程语言中&#xff0c;包&#xff08;Package&#xff09; 是一种用来组织和管理类&#xff08;Class&#xff09;和接口&#xff08;Interface&#xff09;的机制。包为开发者提供了一种逻辑分组的方式&#xff0c;使代码更加模块化、结构化和易于…...

Pipeline知识小记

在scikit-learn&#xff08;通常缩写为sklearn&#xff09;中&#xff0c;Pipeline是一个非常重要的工具&#xff0c;它允许你将多个数据转换步骤&#xff08;如特征选择、缩放等&#xff09;和估计器&#xff08;如分类器、回归器等&#xff09;组合成一个单一的估计器对象。这…...

postman国内外竞争者及使用详解分析

一、postman简介 Postman 是一款广泛使用的 API 开发和测试工具&#xff0c;适用于开发人员和测试人员。它提供了一个直观的界面&#xff0c;用于发送 HTTP 请求、查看响应、创建和管理 API 测试用例&#xff0c;以及自动化 API 测试工作流程。以下是 Postman 的主要功能和特点…...

人工智能对决:ChatGLM与ChatGPT,探索发展历程

图: a robot is writing code on a horse, By 禅与计算机程序设计艺术 目录 ChatGLM:...

Perplexity视频查询效率提升300%的5个硬核参数配置,附可复用的CLI+Browser自动化脚本

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity视频教程查询的性能瓶颈与优化价值 Perplexity 在处理视频教程类查询时&#xff0c;常面临语义理解深度不足、多模态信息对齐延迟及缓存命中率偏低三重性能瓶颈。当用户输入如“如何用 PyTorch 实现…...

Spring Boot 面试题详解:Spring Boot 核心原理、自动配置、启动流程、IoC 容器、Web 请求链路、事务、Actuator 与 JVM 线上排障全攻略

1. Spring Boot 到底是什么&#xff1f;为什么 Java 后端几乎绕不开它&#xff1f;1.1 它不是新语言&#xff0c;也不是替代 Spring&#xff0c;而是 Spring 应用的工程化脚手架Spring Boot 的出现&#xff0c;本质上是为了解决传统 Spring 项目启动慢、配置多、依赖难配、上线…...

如何高效修复损坏视频:专业MP4恢复工具untrunc实战指南

如何高效修复损坏视频&#xff1a;专业MP4恢复工具untrunc实战指南 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾因视频文件意外损坏而痛心疾首&#xff…...

解密冰蝎和蚁剑:在CTF流量分析中如何识别和还原WebShell攻击(含AES/Base64解密实操)

解密冰蝎与蚁剑&#xff1a;CTF流量分析中的WebShell识别与解密实战 在CTF竞赛和安全分析领域&#xff0c;WebShell流量分析一直是让许多选手头疼的高阶挑战。特别是当面对冰蝎&#xff08;Behinder&#xff09;、蚁剑&#xff08;AntSword&#xff09;这类采用强加密通信的Web…...

USB-Disk-Ejector:告别“设备正在使用“烦恼,Windows USB安全弹出终极指南

USB-Disk-Ejector&#xff1a;告别"设备正在使用"烦恼&#xff0c;Windows USB安全弹出终极指南 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It …...

Redis Sorted Set(有序集合)详解

Redis 里面有一种非常强大的数据结构&#xff1a; Sorted Set&#xff08;有序集合&#xff09;简称&#xff1a; ZSet这是 Redis 面试和项目里非常高频的东西。一、什么是 Sorted Set 先记住一句话&#xff1a; Sorted Set 自动排序的 Set它具备&#xff1a; Set 的去重自动排…...

NAS如何变身创作利器?基于绿联DX4600 Pro自建图床与Typora无缝协作

1. 为什么选择NAS自建图床&#xff1f; 作为一名长期使用Markdown写作的内容创作者&#xff0c;我深知图片管理的重要性。过去三年我先后尝试过七牛云、又拍云等第三方图床服务&#xff0c;虽然费用不高&#xff08;每月约5-10元&#xff09;&#xff0c;但经常遇到两个致命问题…...

三星固件下载神器Bifrost:三分钟学会跨平台官方固件下载与解密

三星固件下载神器Bifrost&#xff1a;三分钟学会跨平台官方固件下载与解密 【免费下载链接】Bifrost Cross-platform tool for downloading Samsung mobile device firmware. 项目地址: https://gitcode.com/gh_mirrors/sa/Bifrost 还在为找不到三星官方固件而烦恼吗&am…...

终极指南:如何使用AntiDupl.NET快速清理重复图片,释放硬盘空间

终极指南&#xff1a;如何使用AntiDupl.NET快速清理重复图片&#xff0c;释放硬盘空间 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾因电脑中堆积如山的重复…...

告别轮询!用GD32F4xx的USART中断实现高效串口数据收发(实测对比耗时)

告别轮询&#xff01;用GD32F4xx的USART中断实现高效串口数据收发&#xff08;实测对比耗时&#xff09; 在嵌入式系统中&#xff0c;串口通信是最基础也最常用的外设之一。对于需要同时处理多个任务的系统来说&#xff0c;如何高效地管理串口通信&#xff0c;减少CPU资源的占用…...