别(相信normalizedTime!)不学基础





animation.cullingType = AnimationCullingType.AlwaysAnimate;  下面的废话,这一句就搞定了

 

简直泪流满面……折磨了我好久的问题终于找到根源了。

原来出现的情况是,联机时主机主角如果面壁,让摄像机不对着敌人,敌人就会出现奇怪的情况。他们攻击会出问题,然后就不动了。

郁闷的是如果用EDITOR做主机,BUILD用来做客户端的话就正常,反之就会出这个问题。

我以为是镜头外物体失效了,各种处理。GOOGLE了好多,找不到类似的案例(废话!)

还以为是物体不UPDATE了,脑袋一拍,强制把UPDATE在别处执行也没用。

最后看到攻击代码,想想可能出错的地方

一句一句看不可能错的略过,然后发现问题了:

我是用normalizedTime来判定攻击时机,说不定镜头外不渲染,这个玩意就没用了,估计值一直都是0。于是,添加一个时间流逝的变量,用那个来计算时间,结果立马OK,那一个瞬间,我泪流满面。

if(animation[“attack2”].normalizedTime>=0.48f)

改成:

attackDeltaTime+=Time.deltaTime;

……

if(attackDeltaTime/animation[“attack2”].length>=0.48f)

从这个教训可以得出我要睡觉的结论。

 

 

过了一小段时间,我发现另一个更麻烦的问题,摄像头外动画不播放了,导致我想要获取比如说手的具体位置(transform.position)只能获取到初始的位置,而不能获得正确的动画实际播放中的位置。巨人里面的抓取动作,是需要具体知道动画帧里面手部的位置的。目前还没想到解决方案。