首页 资讯 硬件 视频 视界娱乐 开发者中心 论坛

一个简单动态时钟

36评论 分享:QQ 微信 微博
Date:2016-10-18 04:24 来源: 未知
摘要:此教程我用C#脚本编写制作一个时钟指针动画。


1.创建一个对象层次结构。

2.写一个脚本并将其附加到一个对象上。

3.访问命名空间。

4.通过方法更新对象。

5.基于时间的旋转。


 

此教程我用C#脚本编写制作一个时钟指针动画。

只要对unity的编辑器有基本的了解,会使用C#编写就可以完成此简单的项目。



1.创建出一个时钟模型

开始创建一个新的项目,不需要任何unitypackage.保存一个场景,一个坐标为(0, 1, -10),朝着z轴的负方向的摄像机,为了操作方便我们需要把编辑场景与运行场景一至,点击unity菜单“GameObject”下面的“Align View to Selected”。


我们需要一个对象结构来表示时钟。通过创建一个空的游戏对象/创建一个空的游戏对象,设置它的位置(0,0,0),并将其命名为时钟。为它创建三个空的子对象,并命名它们小时、分钟和秒。确保他们都位置都位于原点(0,0,0)。

我们基本的Cube来制作UNITY时钟指针,给之前创建的空物体添加子物体Cube。时针设置其位置为(0,1,0),三个轴上缩放分别为(0.5,2,0.5),分针位置设置为(0,1.5,0),缩放(0.25,3,0.25),秒针的位置设置为(0,2,0)和(0.1,4,0.1)。

 


2.动画时钟

我们需要一个脚本让时钟动起来,创建一个新的C#脚本,将其命名为ClockAnimator。点开之后将默认内容删掉,从命名空间开始写,定义ClockAnimator类。设置为一个公共类,来继承MonoBehaviour。



我们一个可以用来创建组件的最小类。保存下来之后,把脚本直接托给Clock物体上,获取到这个脚本。


将ClockAnimator的脚本与Clock组合联动起来主要为了使指针动起来,在ClockAnimator脚本中给时针、分针、秒针添加一个变量定义为Transform的变量。主要添加的公共变量就会在界面中显示出来 ,这样可以挂载添加属性,也可以不挂载定义为私有变量利用Transform.find来找。





下一步,我们将在脚本中添加一个更新方法。这是一个特殊的方法,将被称为每一帧。我们将用它来设置时钟臂的旋转。


脚本保存之后,编辑会注意到我们的组件有一个更新的方法,将显示一个复选框,我们可以禁用它。当然,我们保持它启用。


每小时,小时臂必须旋转360度/ 12度。分钟的手臂必须旋转360 / 60度每分钟。最后,秒臂必须每秒旋转360度/ 60度。让我们把这些值定义为方便的私有常量浮点值。


能让时钟转动起来,每一次update时,我们先得到当前时间。System命名空间中DateTime结构体可以用来存储时间,静态变量Now可以返还当前时间,Update时,先得到该值存储起来存在一个临时变量中。


要让时针臂旋转,我们需要改变他们的局部旋转。我们通过直接设置localRotation实现。使用四元素Quaternion可以定义任意角度的旋转。因为untiy本身使用的统一左手坐标系,旋转应该是负方向的Z轴进行旋转。




3.改进时钟

点击运行后,时钟已经可以显示当前时间,但是一些细节让它不像一个石英表的模式,下面增加一个选项,实现模式时间的形式显示出来。在脚本中添加一个public的bool值analog,用它来判断在update显示方式,在运行模式下,我们也可以编辑器中直接控制时钟显示方式了。




添加analog模式的选项,我们需要一个稍微不同的方法。不利用DateTime.Now,我们添加用DateTime.Now.TimeOfDay,这是一个时间段TimeSpan。这使我们能够轻松地访问分数的小时,分钟,秒。因为这个数值类型是double类型,所以我们在使用时需要转换成float类型。






现在时钟也可以analog方式显示。

 

 

原文链接:

资源链接: