【Unity开发】实现简易时钟效果

先创建一个新的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)。

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);

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值