【Unity开发】实现简易时钟效果
2016-01-25 11:14
816 查看
先创建一个新的Unity工程。默认场景包含一个基于 (0, 1, -10) 、俯视Z轴的相机。为了获得和场景视图相机相似的视角,选择相机,然后从菜单中选择GameObject / Align View to Selected。
我们需要一个对象结构来代表时钟,从GameObject / Create Empty创建一个空游戏对象,命名为Clock。为它创建三个子对象,分别命名为Hours, Minutes,以及 Seconds,确保它们都在(0,0,0)位置。
我们用简单的方块来表示时钟的指针。通过GameObject / Create Other / Cube为每一个指针创建子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)。
我们需要一个对象结构来代表时钟,从GameObject / Create Empty创建一个空游戏对象,命名为Clock。为它创建三个子对象,分别命名为Hours, Minutes,以及 Seconds,确保它们都在(0,0,0)位置。
我们用简单的方块来表示时钟的指针。通过GameObject / Create Other / Cube为每一个指针创建子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)。
using UnityEngine; using System; public class ClockAnimator : MonoBehaviour { /// <summary> /// 各个指针度数 /// </summary> private const float hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; public Transform hours, minutes, seconds; /// <summary> /// 是否持续转动 /// </summary> public bool analog; void Update() { if (analog) { //每帧都会返回。格式为:11:13:31.2692810 TimeSpan timespan = DateTime.Now.TimeOfDay; //返回表示的小时数,乘上每个单位的读书即为旋转角度 因为UNITY使用左手坐标系,所以需要绕Z轴负半轴旋转 hours.localRotation = Quaternion.Euler(0f, 0f, (float)timespan.TotalHours * -hoursToDegrees); minutes.localRotation = Quaternion.Euler(0f, 0f, (float)timespan.TotalMinutes * -minutesToDegrees); seconds.localRotation = Quaternion.Euler(0f, 0f, (float)timespan.TotalSeconds * -secondsToDegrees); } else { //每秒返回一次。格式为:1/25/2016 11:12:25 AM DateTime time = DateTime.Now; hours.localRotation = Quaternion.Euler(0f, 0f, time.Hour * -hoursToDegrees); minutes.localRotation = Quaternion.Euler(0f, 0f, time.Minute * -minutesToDegrees); seconds.localRotation = Quaternion.Euler(0f, 0f, time.Second * -secondsToDegrees); } } }
相关文章推荐
- Unity 5: Asset Bundle 和 Asset Bundle Manager (1)
- (新增5.3版本的需求)最近美术同事要求:我们要能给够水和云这样的半透明场景特效上烘焙光照贴图,好吧~~
- Unity学习之路(2)
- UNITY发布安卓APK的整体流程
- Unity学习之路(一)太空大战类游戏制作3
- [转]Unity中使用ulua的个人经验总结
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity Flat Shading实现低多边形(low-poly)效果
- [Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.
- unity, StartCoroutine and StopCoroutine
- 【Unity Shader】Shadow Caster、RenderType和_CameraDepthTexture
- unity3d之刚体碰撞器和触发器的一些知识
- Unity学习之路(1)
- unity 安装
- 【Unity Shader】概述以及Diffuse shader和unity5新功能Standard shader
- Unity实现残影效果
- Unity 5.3配置开发环境、安卓环境
- Unity3D-NGUI动态加载图片
- unity ai car demo
- Unity5.3 AssetBundleName批量赋值