Catlike学习笔记(1.1)-使用Unity实现一个钟表
最近发现『Catlike系列教程』觉得内容真的很赞,感觉有很多地方涉及到了我的知识盲点,如果真的可以照着做下来一遍的话应该收获颇丰。因为教程很长所以逐字翻译不太可能了(主要是翻译的太差)。基本上就是把实现的思路记录下来最后甩一个 「Github Repo」这样就可以了。理论上来说第一篇比较简单,感兴趣的同学可以移步「原文链接」
PART 1 概述
实现一个钟表的话我们的目标就是
- 用一个拍扁的圆柱体制作表盘,用立方体制作刻度和时针分针,用一个细长的圆柱体制作秒针
- 写点 c# 脚本使其显示为当前时间
- 加点动画让指针平滑运动
PART 2 制作场景
大家都是 Unity 熟手了所以具体制作流程就不讲了,博主自己也没仔细看就按照自己想法做了一个差不多的,具体思路就是多设一个层级然后父节点只旋转就可以把指针转到相应的位置而不需要同时调整 Rotation 和 Position。如果不是很懂的话可以回到「原文地址」里面有更详细的做法,或者到我的「Github Repo」下载下来看看。
PART 3 写脚本控制指针
首先建立一个新的 MonoBehaviour 脚本比如说 ClockController.cs 之类的,把时针分针秒针的 Transform 的引用拖到脚本里,然后开始设置各个指针的位置。
那么众所周知表盘的360度被分割成12块所以每一块也就是每个小时占据了 360 / 12 = 30 度。同理每分钟占据了 360 / 60 = 6 度,每秒钟也是。那么直观来说就是这样写。
void Update()
{
_hourArm.localEulerAngles = new Vector3(0, DateTime.Now.Hour * 30, 0);
_minuteArm.localEulerAngles = new Vector3(0, DateTime.Now.Minute * 6, 0);
_secondArm.localEulerAngles = new Vector3(0, DateTime.Now.Second * 6, 0);
}
然而运行一下会发现时针和分针都是笔直的指向其所在的时间。。如下图所示
好吧现在刚好七点钟貌似看不出来,总之就是需要在比如 6:30 的时候时针应该指向 6 和 7 之间。所以这个度数需要再加上一点偏移,变成下面这样。
void Update()
{
var hour = DateTime.Now.Hour;
var minute = DateTime.Now.Minute;
var second = DateTime.Now.Second;
var milisecond = DateTime.Now.Millisecond;
_hourArm.localEulerAngles = new Vector3(0, hour * 30 + minute / 60f * 30f, 0);
_minuteArm.localEulerAngles = new Vector3(0, minute * 6 + second / 60f * 6f, 0);
_secondArm.localEulerAngles = new Vector3(0, second * 6 + milisecond / 1000f * 6f, 0);
}
就可以轻松实现文章里的各种平滑移动之类的~
PART 4 总结
没有完全按照「原文」中的写法来写好像这样会更简洁一点,然后大家应该也会更容易理解,不过作者的主要用意可能是想展示 coroutine 之类的吧不管那些了~总之大家可以进入「Github Repo」查看全部代码和运行 Demo。
原文链接:https://snatix.com/2018/06/06/019-gameobject-and-scripts//
本文由 sNatic 发布于『大喵的新窝』 转载请保留本申明
Catlike学习笔记(1.1)-使用Unity实现一个钟表的更多相关文章
- Catlike学习笔记(1.3)-使用Unity画更复杂的3D函数图像
第三篇来了-今天去参加了 Unite 2018 Berlin,感觉就是....非常困...回来以后稍微睡了下清醒了觉得是时候认真学习下了,不过讲的很多东西都是还没有发布或者只有 Preview 的版本 ...
- Catlike学习笔记(1.4)-使用Unity构建分形
又两个星期没写文章了,主要是沉迷 Screeps 这个游戏,真的是太好玩了导致我这两个礼拜 Github 小绿点几乎天天刷.其实想开一个新坑大概把自己写 AI 的心路历程记录下,不过觉得因为要消耗太多 ...
- Catlike学习笔记(1.2)-使用Unity画函数图像
『Catlike系列教程』第二篇来了~今天周六,早上(上午11点)醒来去超市买了一周的零食回来以后就玩了一整天游戏非常有负罪感.现在晚上九点天还亮着感觉像下午7点左右的样子好像还不是很晚...所以就写 ...
- vue学习笔记之:为何data是一个方法
vue学习笔记之:为何data是一个方法 在vue开发中,我们可以发现,data中的属性值是在function中return出来的.可为何data必须是一个函数呢?我们先看官方的解释: 当一个组件被定 ...
- mybatis学习笔记(14)-查询缓存之中的一个级缓存
mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
- ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁
作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...
- Ionic2学习笔记(1):新建一个页面
作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5532323.html 新建一个页面: 借上一篇中的HelloWorl ...
- STM32学习笔记(一)——点亮一个LED
引言 最近报名了2017全国大学生电子设计竞赛,我们学校是第一次参加这个比赛,由于8/9月份就要比赛了,所以现在准备是比较晚的了,指导老师说只能做控制类的题目了,让我们学习一下STM32单片机,51到 ...
随机推荐
- 俄罗斯方块(JS+CSS)
这是一个用 js + css 写的网页版俄罗斯方块. 具体代码与示例可访问我的另一个博客查看,源码与示例.
- 脱壳_01_虚拟机壳_VMP
写在前面的话: 上一篇文章中,带领大家一起分析了简单的压缩壳ASPACK,今天,就和大家一起来揭开VMP这道神秘的面纱: [花指令]:扰乱调试器的,并不执行: [混淆]:对原指令进行拆解或等价替换,会 ...
- Tidb进行缩减扩容tikv节点
这两天接到任务说是要进行测试缩减机器给集群带来的负面效果有哪些. 然后我就按照官方的教程将机器进行了缩减,主要是缩减tikv节点 我们先来看看官方的文章是怎么写的: 步骤都没有什么问题,就是进行到第二 ...
- SNMP协议利用
1.安装snmp服务 2.配置snmp服务 运行Services.msc 添加社区public,只读 启动服务 3.在kali运行 Snmpwalk -c public -v 2c IP 即可查看目标 ...
- October 26th, 2017 Week 43rd Thursday
For success, attitude is equally as important as ability. 为取得成功,态度与能力一样重要. Today I read a news about ...
- H5页面meta标签小结:
<meta name="viewport" content="width=device-width,user-scalable=no"> <m ...
- ORB SLAM2在Ubuntu 16.04上的运行配置
http://www.mamicode.com/info-detail-1773781.html 安装依赖 安装OpenGL 1. 安装opengl Library$sudo apt-get inst ...
- Scrapy实践----获取天气信息
scrapy是一个非常好用的爬虫框架,它是基于Twisted开发的,Twisted又是一个异步网络框架,既然它是异步的,那么执行起来肯定会很快,所以scrapy的执行速度也不会慢的! 如果你还没没有学 ...
- 【转】Android Camera 相机开发详解
在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口.Camera2在接口和架构上做了巨大的变动, 但是基于众所周知的原因,我们还必须基于 Android ...
- Python2.7-内置异常类型
python内置了许多异常类型,他们的继承关系如下:-----------------------------------------------BaseException +-- SystemExi ...