罗马时钟做法,手工时钟高级做法

首页 > 经验 > 作者:YD1662025-05-05 11:46:19

罗马时钟做法,手工时钟高级做法(1)

要制作罗马时钟,首先需要准备一个圆形的木板作为时钟的底座,然后将圆形木板分成12个等分,代表12个时辰。

接下来,需要准备12个小的罗马数字标识,分别代表1到12点的时间。将这些罗马数字标识固定在相应的位置上。

接着,可以在时钟的中心位置安装一个时针和一个分针,用来显示时间。

最后,可以根据个人喜好来进行装饰,比如在时钟的周围绘制花纹或者涂上喜欢的颜色。这样一个罗马时钟就制作完成了。

制作思路:1. 文本的放置位置。2.时间的获取 和校正。 3. Text随着时间的刷新 而刷新位置

主要思路 就这些,然后就是 一些动画 效果。刚开始功能出来的时候,是没有 旋转那个动画的,看上去 很low。。。

后面加了个 补间动画。

核心代码:拿月份 来说,下面 是初始化代码,就是 位置的放置。

private void InitMonthes()

{

int monthesLen = Monthes.Length;

float radius = 100.0f;

float posX = 0;

float posY = 0;

float angel = 360.0f / monthesLen;

GameObject tempObj;

for (int i = 0; i < monthesLen; i++)

{

posX = _middlePoint.localPosition.x + radius * Mathf.Cos((monthesLen - i) * angel * Mathf.Deg2Rad);

posY = _middlePoint.localPosition.y + radius * Mathf.Sin((monthesLen - i) * angel * Mathf.Deg2Rad);

tempObj = TextFactory(_monthesTrans);

tempObj.GetComponent<Text>().text = Monthes[i];

tempObj.GetComponent<TextState>().Init(new Vector3(posX, posY, 0), 0.5f);

//tempObj.transform.localPosition = new Vector2(posX, posY);

tempObj.transform.Rotate(transform.forward, (monthesLen - i) * angel);

}

}

下面这个是月份的校正

private void FixMonth(bool isInit = false)

{

int month = System.DateTime.Now.Month;

_nowMonth = month;

if (isInit)

{

_monthesTrans.transform.Rotate(transform.forward, 360.0f / Monthes.Length * (month - 1));

}

else

{

//_monthesTrans.transform.Rotate(transform.forward, 360.0f / Monthes.Length);

_monthesTrans.transform.DORotate(new Vector3(0, 0, _monthesTrans.eulerAngles.z + 360.0f / Monthes.Length), 0.8f);

}

if (month - 2 < 0)

{

_monthesTrans.GetChild(Monthes.Length - 1).GetComponent<TextState>().SetNormal();

}

else

{

_monthesTrans.GetChild(month - 2).GetComponent<TextState>().SetNormal();

}

_monthesTrans.GetChild(month - 1).GetComponent<TextState>().SetHighLight();

}

在Update里面 每帧去检测时间,发生改变 然后去校正 相应的 部分。核心部分代码 就只有这些。个人觉得只是一些角度的计算,后面可以 改进一下,让秒针 转动 带动 里面 的转动,那样就更像表了,有兴趣的朋友可以试试。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.