<我是一个客户端程序员>
上一讲结尾说道:ET4.0 Demo 中角色在移动过程中最后一步总感觉被“拽”一下。我想先验证一下这个问题,所以现在将它替换成一个普通的方盒子。
开始吧:
- 1.运行起来,在Scene中找到角色实例。(鼠标在Scene中点哈) Skeleton就是这个角色。
- 2.根据名字(看到Clone字样,肯定是prefab克隆的),在Project中去找它的prefab。同时也知道了作者放资源的目录。
定位Skeleton的位置(把它拽到场景,然后选中它,用select跳转,我觉得这样快)
- 3.创建一个Cube,拽到Skeleton的路径, 制作成预设。
- 4.(在这之后我尝试了用重命名Cube来替换Skeleton的方式,但是失败了,后来找到原因了,现在只写“对”的过程)
- 5.在代码中搜索"Skeleton"
发现是走的AssetBundle,打开AssetBundle Browser查看,下载地址是。
在AssetBundles-Browser中查看上图中的倒数第2行代码中提到的资源。 点中即跳到相应资源位置,如图: 看Unit的Inspector界面发现在这里指定了引用的角色模型。用Cube替换这个预设(另外提一句:Cube是整体缩放了0.1倍才和原有角色大小匹配)。 - 6.打包资源(可以不打包exe) 运行。成功。但是移动过程中,最后一步依旧是“拽”的。
补充:
必须要解决"拽"一下的情形。翻找源代码发现移动是由MoveComponent.cs控制的。这两处检测是否到达"目标点"的容错值是 0.1f(修改前), 改成图中的0.01f就没有拖拽了。结论:拽是因为判断是否到达目标点的精度问题。
看一下demo中的角色,和unity中默认Cube的比例关系,xyz全部被缩放了0.1倍的大小。所以为了配合这个模型缩放再缩放一下距离精度。
本文写作过程中,遇到"失败经历",为简化过程,只写“正确”流程,所以文章经历了再三编辑,我也反复检查了流程,如果您根据本文依次实验时遇到我遗漏的步骤,请留言,感谢您的阅读。