关于对SWS插件的一些扩展
2017-08-08 18:26
302 查看
最近用unity写物体按照一定路线运动的一些内容,中间接触到了SWS这个插件。这个插件是基于DoTween来实现的,性能优化的不错,推荐一下。但插件中忽略了一个问题,如果运动过程中,游戏被切到后台(后台被挂起没有运行),切回来之后按理说物体的运动的位置应该发生改变了,但是这个插件并没有提供。因此,决定改写一下,来完善这个功能。
以splineMove为例进行扩展:1:定义脚本继承splineMove
public class ExSplineMove : splineMove { }
2:定义物体运动的初始时间,并在开始的时候初始化它
public long createTime { get; set; } // Use this for initialization private void Start() { createTime = DateTime.Now.Ticks; if (onStart)//这个是splineMove原有的,拷贝它 StartMove(); }
3:添加变量来判定,切换到主屏幕后,是否按照时间同步
public bool SynTime;//时间是否同步
4:定义刷新位置的方法
private void RefreshPosition() { float lifeTime = (DateTime.Now.Ticks - createTime) / 10000000.0f;//转换成秒 float totalTime = WaypointManager.GetPathLength(pathContainer.GetPathPoints()) / speed;//获取运动的总时间 if (tween == null) { return; } tween.ForceInit(); tween.Goto(lifeTime, true);//迫使运动到具体的时间应到的位置 }
5:最后再加上切换到主屏幕监听
private void OnApplicationFocus(bool hasFocus) { if (hasFocus&&SynTime/*按照自己的需求,看是否需要按照时间同步*/) { RefreshPosition();//刷新物体的位置 } }
这样总体就完成了。但细心的读者会发现,
float totalTime = WaypointManager.GetPathLength(pathContainer.GetPathPoints()) / speed;//获取运动的总时间
这行代码是求物体运动的总时间的,这就要求该物体是匀速率运动的;倘若是变速运动,则需要自己给出相应时间应到具体位置的算法了,这里就不再赘述。
相关文章推荐
- 【Cocos2d-x 007】 关于CCpoint的一些算法或者说扩展
- python的一些扩展模块,关于Reserving的....
- 关于android studio中装插件genymotion时遇到的一些问题
- 关于单群的一些知识扩展
- 关于扩展Google Map API的一些想法
- 随笔:关于ios通知中心插件widget验证的一些坑
- 关于插件开发扩展和扩展点的理解和思考
- 关于YII的菜单插件 CMenu和面包末breadcrumbs路径管理插件的一些使用问题
- 关于jq的360度图片循转插件UIMIX的一些问题
- 关于WordPress 插件Thumbs Rating 汉化想到的一些启示
- 关于office插件的网络资料收集(一些比较经典的文章)
- 关于Eclipse插件ADT的一些事
- 关于使用chrome扩展插件
- 关于javascript动态增减控件的一些想法和小插件
- 关于使用Artery插件的一些积累1
- 分享Chrome Extension(扩展程序/插件)开发的一些小经验
- 关于joomla1.5 easybook插件的一些问题
- 关于Yii的菜单插件CMenu和面包屑breadcrumbs路径管理插件的一些使用问题
- 关于MSCHART插件的一些功能函数记录——Note on Dec. 20
- 关于扩展欧几里得一些补充hdoj 2669