前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“你那么强,能不能用Unity做时钟”,“嗨,这有啥难”

“你那么强,能不能用Unity做时钟”,“嗨,这有啥难”

作者头像
恬静的小魔龙
发布2022-08-07 09:04:47
3340
发布2022-08-07 09:04:47
举报
文章被收录于专栏:Unity3DUnity3D

一、前言

又见面了哈,今天为大家介绍时钟、钟表的实现方法教程。

实现的方法有很多,这里只是提供了一个思路,本着抛砖引玉的心态,希望能和大家共同学习。

在这里插入图片描述
在这里插入图片描述

二、效果图及源工程下载

效果图:

在这里插入图片描述
在这里插入图片描述

源工程下载:

https://wwr.lanzoui.com/iA2Ngpivf6f

三、实现

3-1 场景搭建

使用Cylinder搭建一个时钟面,然后使用TextMesh设置小时数,最后使用长短不一的Cube做成时针、分针、秒针。

在这里需要说明的第一点是,需要将时针、分针、秒针拖到对应的父物体下,做成预制体,因为代码是使用Quaternion.AngleAxis函数进行绕轴旋转,所以直接旋转针的话,就变成自转了,所以需要旋转它的父物体,这样子物体就跟着转了,将父物体的坐标设置为0,0,0,那么子物体就是以中心点旋转了。

搭建后如下图所示:

在这里插入图片描述
在这里插入图片描述

3-2 代码实现

代码语言:javascript
复制
using System;
using UnityEngine;

public class Clock : MonoBehaviour
{
    private GameObject HourHands;//时针
    private GameObject MinuteHand;//分针
    private GameObject SecondHand;//秒针

    void Start()
    {
        HourHands = GameObject.Find("时钟/时针");
        MinuteHand = GameObject.Find("时钟/分针");
        SecondHand = GameObject.Find("时钟/秒针");
    }

    void Update()
    {
        TimeSpan time = DateTime.Now.TimeOfDay;
        HourHands.transform.localRotation = Quaternion.AngleAxis(30 * time.Hours, Vector3.up);
        MinuteHand.transform.localRotation = Quaternion.AngleAxis(6 * time.Minutes, Vector3.up);
        SecondHand.transform.localRotation= Quaternion.AngleAxis(6 * time.Seconds, Vector3.up);
    }
}

没错,就是这几行代码就实现了:

在这里插入图片描述
在这里插入图片描述

四、后言

代码依旧延续简约风格,不多写一行代码

整体思路也很简单,就是获取到当前时间,然后让时针分针秒针转到指定的角度即可。

突然又想到了一个案例,就是太阳系星球的公转和自转,嗯~

就这样,结束。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、效果图及源工程下载
  • 三、实现
    • 3-1 场景搭建
      • 3-2 代码实现
      • 四、后言
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档