欢迎光临散文网 会员登陆 & 注册

Unity2D物理的几点探寻

2021-09-28 22:27 作者:白白_可乐  | 我要投稿


说起来一直是用的直接修改速度来实现的各类移动,这样就导致在做移动平台啊,爆炸推开等类似物理效果的时候需要增加额外的代码来驱动角色(当然也可以通过状态机来解决,但还是感觉不爽),今天闲暇就简单看了下一直没有怎么用上的线性阻力和转动阻力,当然这篇专栏主要讲线性阻力.

首先要做的是找到这个值具体是怎么用的,但是文档写的也是非常的...

文档对于drag的解释

只说了个大概,说了等于没说,于是我就大胆假设,小心求证.

假设这个系数是一个和速度相关的值,那么在阻力不为零的情况下,只要我保证施加在物体身上的力F不变,那么和这个力F反方向的空气阻力F(空气阻力)将会逐渐增大,直到这个两个力的大小持平,使物体由变加速直线运动转变为匀速直线运动.

(测试图略,就是不截图,诶)

经过测试,发现这个系数真的就是如同我猜想的那样,就是一个简单的乘法,即:

F(空气阻力)= -1 × 空气阻力系数 × F(除了空气阻力以外的其他力)

非常直白,举个例子就是,当阻力设置为9.8的时候,1倍重力的情况下,物体下落的最终速度为竖直方向的1,即Vector3.down,

有了这个基础,如果我们想要基于空气阻力来设置玩家最终速度,并且以AddForce为驱动的话,以水平方向为例子,可以轻松算出

V(最终速度)=F(水平方向推力) / drag(空气阻力)

提高推力和阻力并不会影响最终速度,但是会显著影响到达最终速度的时间,手感也会更加干脆.

(但是带来了下落变慢的问题...什么叫有舍有得啊)



摩擦力这种初中就学过的知识我就我展开了,大家应该都知道F(摩擦)=F × f




Unity2D物理的几点探寻的评论 (共 条)

分享到微博请遵守国家法律