[程式] Unity的animator

楼主: reccaX (渺小的正义)   2016-12-01 03:36:07
各位安,最近照着网络上的影片教学学习unity的基础,
但是目前遇到了问题,看的是这个影片:
https://youtu.be/5ghbRb0bBJs
当中有个段落是要设定在降落而非着地的时候,
animator的bool land为true(约19分18秒)
但是只要我打上那段code,即使在落地的情况下,land仍然为true,
并且因为在地面上,所以会不停地在false跟true当中切换。
由于这段code并不困难,我实在不知道该怎么处理这个问题,
不知道有没有人可以帮忙看看可能是什么原因?
该段code:
if (myRigidbody.velocity.y < 0)
{
myAnimator.SetBool("land", true);
}
作者: cjcat2266 (CJ Cat)   2016-12-01 03:49:00
会变成true表示仍然有向下的速度分量,找出原因吧
楼主: reccaX (渺小的正义)   2016-12-01 04:19:00
我有用log看rigibody.velocity.y,是0啊......
作者: cjcat2266 (CJ Cat)   2016-12-01 04:37:00
确定是这行被执行吗? 试试看改成 y < 0.01f
作者: wix3000 (痒,好吃)   2016-12-01 07:23:00
不可相信你的浮点数
作者: cjcat2266 (CJ Cat)   2016-12-01 07:54:00
推楼上,float比值都要考虑误差
楼主: reccaX (渺小的正义)   2016-12-01 15:02:00
rigibody的gravity scale会有影响吗?我放弃深究了,决定多加一个判断isground 囧
作者: cjcat2266 (CJ Cat)   2016-12-01 16:34:00
一般平台动作游戏不建议用物理模拟,详见#1MzrJMwb
楼主: reccaX (渺小的正义)   2016-12-01 16:51:00
我明白了,感谢
作者: guagin (AnnoyingEve)   2016-12-03 12:11:00
condition?
作者: cowbaying (是在靠北喔)   2016-12-04 21:43:00
只能说物理引擎不是万能的 尤其是碰撞判定
作者: wix3000 (痒,好吃)   2016-12-05 13:39:00
可是碰撞不用Unity物理的话要怎么办 QQ?
作者: cjcat2266 (CJ Cat)   2016-12-05 15:19:00
碰撞和投射可以用,解析(resolution)要自己处理否则会很飘,除非那是你要的风格,详细仍请见#1MzrJMwb
楼主: reccaX (渺小的正义)   2016-12-13 04:28:00
看了一下发现y会在0跟-1.77之间跳动,不明原因
作者: cjcat2266 (CJ Cat)   2016-12-13 04:49:00
放个data break point找出原因吧你的单位是像素还是公尺? 请用后者还是Unity有自动单位转换? 不清楚,先找出负值原因再说
楼主: reccaX (渺小的正义)   2016-12-13 15:43:00
http://i.imgur.com/13dviuL.png 不打算深究这个问题因为算是跟着范例跑,往下的是用内建重力,之后做专案会再想办法处理
作者: cjcat2266 (CJ Cat)   2016-12-13 16:28:00
呃...-1.77跟-1.77e-15差非常多耶...后者是极小数,为上面讨论的误差,这种东西一定要懂啊不了解的话以后照样碰壁补充,那是"科学记号"表示法 http://bit.ly/2hI5tZz1.xyzEn 代表 1.xyz * 10^n
楼主: reccaX (渺小的正义)   2016-12-13 17:03:00
了解了,感谢,文组出身碰几次壁我觉得还算正常XD我比较好奇的是为什么范例的不会出现这个误差....code是完全一样的,是unity哪边设定的问题吗?
作者: cowbaying (是在靠北喔)   2016-12-13 18:52:00
主要是浮点数 有效位数的问题简单写个程式 0.0001 +1000次 单精度跟倍精度的结果是不一样的范例的不会出现这种误差 只能说是特别规划过
作者: cjcat2266 (CJ Cat)   2016-12-14 02:08:00
只能说范例执行环境天时地利人和,没有产生误差这种物理模拟的速度Y分量,一定都要考虑误差所以要用 vel.y > -EPSILON, EPSILON为小正数范例的 vel.y > 0 是不良示范而且我建议习惯写成 > 0.0f 或 > .0f就可以很明显的看出是在比较可能会有误差的浮点数↑噢,上上行不是指跟0比较,还是要跟EPSILON比较重点是常数要写成浮点数表示法
楼主: reccaX (渺小的正义)   2016-12-14 02:42:00
好的,很感谢大家热心指导

Links booklink

Contact Us: admin [ a t ] ucptt.com