关于对SWS插件的一些扩展
来源:互联网 发布:java行业 编辑:程序博客网 时间:2024/06/05 18:10
最近用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;//获取运动的总时间
这行代码是求物体运动的总时间的,这就要求该物体是匀速率运动的;倘若是变速运动,则需要自己给出相应时间应到具体位置的算法了,这里就不再赘述。
阅读全文
0 0
- 关于对SWS插件的一些扩展
- 关于对js插件fullpage学习的一些心得
- yii2-user 扩展插件的一些坑
- 对eclipse功能的一些扩展方式
- 对string的一些扩展函数
- 关于FireFox扩展插件的示例演示
- 关于对Linq的Distinct的扩展
- 关于单群的一些知识扩展
- 关于扩展欧几里得算法的一些资料
- 关于对jquery.unobtrusive-ajax的扩展
- 15个对开发人员最佳的Chrome扩展插件
- 关于插件的一些资料收集
- 关于IE插件编程的一些资料
- 关于Eclipse插件ADT的一些事
- 关于select2插件的一些使用心得
- prototype1.6.03 库 对源码的一些理解(Dom扩展)
- GCC对C语言的一些扩展小结
- 关于使用chrome扩展插件
- 二分模板
- 服务器安装后的系统优化
- 二十三种设计模式之状态模式
- hive 客户端连接hive server出现Query returned non-zero code: 10001 SemanticException
- windows64上python2.7连接mysql
- 关于对SWS插件的一些扩展
- Springboot 集成阿里短信 ClassNotFound的坑
- Android 获取ROOT权限原理解析
- Accelerate the downloading of docker images through Ali
- Vue 组件库实践和设计
- vtk 通过指针实时刷新界面
- 腾讯云 安装 lamp + laravel
- flume框架案例之抽取日志
- 从一个数组中找出众数,及其出现的次数