Unity简单几行代码让玩家水平移动更丝滑真实

news2024/9/24 13:23:29

可以先来看看基础的移动代码,接收玩家的输入,然后赋予刚体速度。

但是这种写法存在几个问题,下面一一纠正。

 

 首先,如果直接改变刚体的速度,那么可能会出现穿墙的问题。

而且没有一种从速度0到缓慢加速的过程,那样较为机械且不真实。

所以可以用物理模拟的方式来实现玩家的移动。

所以就可以使用AddForce,但是如果没有设定力的模式,那么添加的力将会使玩家的初始速度从0开始慢慢增加,会有下面这种效果,初始移动时较为笨重:

(如果不明白可以自己在unity试一下,手感比较笨重)

所以在添加力的模式时使用AddForce.Impulse。Impulse就是一种突然迸发出的力的那种感觉,会使得物体在初始时刻就具有不小的速度(比如你突然被人猛推了一下)

 

另一方面,我们倾向于将物理相关的现象放在fixupdate中去做。

但是为了保证所有输入输出都被接收,输入输出要放在update中。因此,我们在update中接收输入并将输入输出的结果保存到一个变量中。

然后在fixupdate中去使用这个变量的值执行相关的物理效果。

随后可以发现移动丝滑了一些:

 

 

但是这还不够,我们希望玩家的移动具有如下属性:

1.一个最大速度(即速度不能无限制的增加下去)。

如果我们持续给物体添加力,那么物体的速度会持续增加,且没有上限。

 当玩家的速度大于给定的最大速度时即对其限制,代码如下:

2.有一个加速度,(因为回看前面的代码可以发现,给玩家力直接给InputX的数值,我们需要让其乘以一个系数以方便量化加速效果)

 

(为什么这里又不需要设定ForceMode了?原因如下:ForceMode不设定时默认为持续力

由于给物体的力时我们让其乘以了一个加速度,所以加速的效果我们可以自己设定。

另一方面,我们此时使用ForceMode中的持续力时,加速度一直存在,则物体速度会不断增加。所以需要设定最大速度。

但如果使用Impulse效果,它是一个瞬时的力,很接近直接给物体一个瞬时的速度的效果。

而另一方面,Impulse不是持续的力,是瞬时的力。即使我们持续给该物体添加瞬时力,也只是使得其速度维持在一个稳定的值。所以可以看到在最上面的代码中使用ForceMode.Impulse我们无需设定其最大速度。)
 

 3.还有一个用来减速的量。

虽然地面自带减速效果,但由于我们没有给地面设定摩擦系数,则其是很光滑的, 因此减速也减的很慢。

我们一方面可以设定摩擦系数,另一方面也可以通过代码实现玩家的减速效果:

也很简单,当玩家的输入逐渐消失时,我们设定刚体的阻力即可:

 至此,就全部实现了水平方向平滑的移动了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自定义Filter后,我的业务代码怎么被执行了多次?

若要求构建的过滤器针对全局路径有效,且无任何特殊需求(主要针对 Servlet 3.0 的一些异步特性),则完全可直接使用 Filter 接口(或继承 Spring 对 Filter 接口的包装类 OncePerRequestFilter),并…

分享130个ASP源码,总有一款适合您

ASP源码 分享130个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 130个ASP源码下载链接:https://pan.baidu.com/s/13ZxaHPHdgorjGV1wWvx1WQ?pwd7z4p 提取码&#x…

07_FreeRTOS任务调度器的挂起和恢复

任务调度器的挂起和恢复 挂起任务调度器,调用此函数不需要关闭中断 使用格式示例: 1.与临界区不一样的是,挂起任务调度器,未关闭中断; 2.它仅仅是防止;饿任务之间的资源争夺,中断照样可以直接响应; 3.挂起调度器的方式,适合于临界区位于任务与任务之间;既不用去延…

MySQL 8.0.31 集合操作INTERSECT和EXCEPT

对于聚合的功能MySQL是都是默默的发展。在最新的8.0.31版本中提供对集合操作INTERSECT和EXCEPT。这样一来,集合操作功能基本圆满了。MySQL5.7.40版本是不支持这个集合的。 In this release MySQL adds support for the SQL standard INTERSECT and EXCEPT table op…

Linux常用命令——ssh命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) ssh openssh套件中的客户端连接工具 补充说明 ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。 语法 ssh(选项)(参数)选项 -1:强制使用ssh协…

基于FPGA的时间数字转换(TDC)设计(四)

1. 基于IODELAY的TDC设计原理 在第一篇中讲过,基于FPGA开发的TDC常见的有直接计数法,多相位时钟采样法,抽头延迟线法等等。前面3篇讲解了基于多相位的TDC,接下来主要讲解基于抽头延迟线的方法。在Xilinx FPGA开发中,要实现抽头延迟线,主要由进位链(Carry4)和IODELAY模块…

寒假题练——day(6)

题目1: 有一种兔子,从出生后第3个月起每个月都生一只兔子, 小兔子长到第三个月后每个月又生一只兔子。 例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。 一月的时候有一只兔子,假如兔…

检索方案优化

文章目录 1. Flab框架概览2. Flab框架各个层在基金检索的具体应用2.1. 前置检查Check层2.2. 多路召回Recall层2.3. 结果集过滤2.3.1. 问财和我们召回结果的交集2.4. 排序Rank2.5. 缓存Cache2.6. 封装Assmeble1. Flab框架概览 Fly like a bird 寓意灵活 2. Flab框架各个层在基金…

2023年大年初一 —— 牛客网刷题经验分享~

2023年大年初一 —— 牛客网刷题经验分享~😎大年初一 —— 牛客网刷题经验分享~😎)前言🙌BC94 反向输出一个四位数 😊BC95 小乐乐与进制转换 😊BC96 [NOIP2015]金币😊BC97 回文对称数 😊总结撒花…

pytorch 神经网络基础入门笔记【b站小土堆】

文章目录python深度学习配置环境anacondapycharmpytorchpython学习中的两大法宝函数加载数据Tensorboard使用torchvision中的transformstensor数据类型transform该如何使用为什么我们需要Tensor类型更好的使用transformsToTensorNormalizeResizeComposeRandomCrop总结torchvisi…

JVM快速入门学习笔记(三)

9. 栈 栈:8大基本类型对象引用 栈运行原理:栈帧 程序正在执行的方法,一定在栈的顶部 9.1 JVM数据区 先上一张Java虚拟机运行时数据区中堆、栈以及方法区存储数据的概要图,如下所示: 9.2 堆 堆是存储时的单位&…

美团出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)

🚀🚀🚀美团出品 | YOLOv6 v3.0 is Coming !!✨✨✨ 一、前言简介 🎄🎈 📚 代码地址:美团出品 | YOLOv6 3.0代码下载地址 📚 文章地址:https://a…

四、python-pyecharts图表可视化(黑马程序猿-python学习记录)

黑马程序猿的python学习视频:https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 官网链接 2. 下载pyecharts 3. 编写一个折线图 4. 隐藏线段上的数据 5. 绘制柱状图 6. 柱状图的xy轴反转 7. 柱状图设置提示在最右边 8. 时间柱状图 9. 时间柱状图设置颜色主题 …

第三章 AOP

1.AOP基本概念*什么是AOP:面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率(不通过修改源代码方式,在主…

深入跨域问题(2) - 利用 CORS 解决跨域

目录 1.搭建跨域环境(先展示一下跨域请求的情况)&#xff1a; 2.处理非预请求 3.处理 POST 预请求 4.总结&#xff1a; 1.搭建跨域环境(先展示一下跨域请求的情况)&#xff1a; 模拟客户端请求&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <…

客快物流大数据项目(一百零七):物流信息查询服务接口开发解决方案

文章目录 物流信息查询服务接口开发解决方案 一、业务需求

探究数据库mysql的vachar、test、longtext存储极限

文章目录背景介绍项目实操如果想要自己尝试&#xff0c;使用Apipost工具&#xff0c;调用接口测试即可mysql类型如果感觉有点意思点个关注&#xff0c;一键三连吧&#xff01;蟹蟹&#xff01;&#xff01;&#xff01;背景 想要清晰的了解到&#xff0c;使用longtext类型&…

C++:类的构造函数与析构函数

目录 一.前言 二.类的构造函数 1.构造函数基本概念与语法细则 2.编译器默认生成的无参构造函数和自定义构造函数 3.构造函数的特性(可重载) 4.关于构造函数的注意事项 5.构造函数的应用示例&#xff1a; 三.类的拷贝构造函数 1.拷贝构造函数基本概念 2.编译器默认生成…

零入门容器云实战之文章目录列表

建议: 1、网盘资源 零入门容器云网络实战 链接: https://pan.baidu.com/s/1nPLRkAwjItAHmtEU2T1F4g 提取码: rrpd 2、技术交流群 QQ群&#xff1a; 342498897 3、发布说明 绿色字体&#xff0c; 表示已经发布&#xff0c;可以观看 灰色字体&#xff0c; 表示未发布 发布频…