项目展示



Github项目地址:简单时钟 Clock

制作流程

表盘绘制:

采用Aseprite 像素绘图软件绘制表盘及指针。本例钟表素材大小 256x256,存储格式为png,但发现导入Unity后较为失真,建议256+像素或调整Unity内相关参数。

代码配置:

设置表盘、指针到合适位置,创建Clock.cs脚本挂载于表盘,编写代码:

public class Clock : MonoBehaviour
{
//接收三个指针
public GameObject hourHand;
public GameObject minuteHand;
public GameObject secondHand; //小时、分钟、秒钟
private int h;
private int m;
private int s; void Update()
{
//读取本地时间
GetNowTime(); //更新针轴旋转:
//Quaternion.AngleAxis(angle : float, axis : Vector3):绕 axis轴旋转 angle角度,创建一个旋转
//其中绕 axis轴方向:左手拇指指向axis方向,四指所环绕的方向(类似左手螺旋定则)
hourHand.transform.rotation = Quaternion.AngleAxis((30 * h + 0.5f * m + (30.0f / 3600.0f) * s), Vector3.back);
minuteHand.transform.rotation = Quaternion.AngleAxis((6 * m + 0.1f * s), Vector3.back);
secondHand.transform.rotation = Quaternion.AngleAxis((6 * s), Vector3.back);
} //读取本地时间信息
private void GetNowTime()
{
//例如本地时间为 10:23:12
h = DateTime.Now.Hour; //h = 10
m = DateTime.Now.Minute; //m = 23
s = DateTime.Now.Second; //s = 12
}
}

问题探讨

  • Quaternion.AngleAxis (angle : float, axis : Vector3):以自身原点为基点,创建返回一个绕axis轴旋转了angle角度旋转的四元数
  • transform.Rotate(eulerAngles : Vector3):以自身原点为基点,应用一个欧拉角的旋转角度,eulerAngles.z度围绕z轴,eulerAngles.x度围绕x轴,eulerAngles.y度围绕y轴。常用于物体简单旋转

Unity中,Transform.rotation是四元数(Quaternion),但Unity以欧拉角(Vector3)的形式表示。因此,当我们打算像position赋值那样给rotation直接赋值时,需要赋予Quaternion类型的值(例如rotation.eulerAngles = new Vector3(90, 0, 0);)。本例采用的AngleAxis方法就是如此,其创建返回了一个新的已经旋转到目标角度的四元数,我们用物体的rotation接收这个新的四元数即可实现钟表旋转,本质为修改rotation。而Rotation方法则是普通常用较为安全的绕某方向旋转的函数,便于设置旋转速度等,可用于人物控制旋转、赛车游戏转向等等,本质为旋转

参考

Unity项目 - 简单时钟 Clock的更多相关文章

  1. Unity学习笔记(二)——第一个Unity项目Hello Unity

    保留版权,转载请注明出处:http://blog.csdn.net/panjunbiao/article/details/9318811 在这一篇文章里,参照宣雨松的<Unity 3D游戏开发& ...

  2. Unity项目中的资源管理

    这是我在2017金山技术开放日分享的部分内容.从贴图资源格式配置的介绍开始,引申出资源配置工具,最后再谈谈一整套项目资源管理方案.在GitHub上可以获取到资源配置工具的代码,是基于下面理念的一份简单 ...

  3. 关于 Unity 项目中的 Mono 堆内存泄露

    关于 Unity 项目中的 Mono 堆内存泄露 题记:这是补一篇应该在将近一年前就应该写的记录,今天终于补上. 内存泄露是一个老话题了,之前我专门写过一篇 排查 Lua 虚拟机内存泄露 的文章,并且 ...

  4. Unity项目 - MissionDemolition 愤怒的小鸟核心机制

    目录 游戏原型 项目演示 绘图资源 代码实现 注意事项 技术探讨 参考来源 游戏原型 爆破任务 MissionDemolition 是一款核心机制类似于愤怒的小鸟的游戏,玩家将用弹弓发射炮弹,摧毁城堡 ...

  5. Unity实现简单的对象池

    一.简介 先说说为什么要使用对象池 在Unity游戏运行时,经常需要生成一些物体,例如子弹.敌人等.虽然Unity中有Instantiate()方法可以使用,但是在某些情况下并不高效.特别是对于那些需 ...

  6. 为Unity项目生成文档(二)

    Unity项目生成文档 接着上篇文章:为Unity项目生成文档(一) .Net项目可在VS配置XML 我们可以在VS中通过配置来生成xml文件,但是unity的project,就算同样配置了xml文档 ...

  7. unity项目实现“再按一次退出程序”提示功能

    unity项目,再按一次退出程序,按第一次做提示,再按一次,程序退出. float _waitTime = 2f;//前后两次按退出间隔时间 void OnGUI() { ) { GUI.Label( ...

  8. 关于Unity项目中创建项目遇到的一些问题

    1.Unity调用Android的方法默认不是在UI线程执行,所以在Android上写一些页面的重绘的方法,让Unity去调用时,注意要在Android中添加对应的runOnUiThread才可以: ...

  9. 使用Slua框架开发Unity项目的重要步骤

    下载与安装 下载地址 GitHub 安装过程1.下载最新版,这里, 解压缩,将Assets目录里的所有内容复制到你的工程中,对于最终产品,可以删除slua_src,例子,文档等内容,如果是开发阶段则无 ...

随机推荐

  1. Vue.set 向响应式对象中添加响应式属性,及设置数组元素触发视图更新

    一.为什么需要使用Vue.set? vue中不能检测到数组和对象的两种变化: 1.数组长度的变化 vm.arr.length = 4 2.数组通过索引值修改内容 vm.arr[1] = ‘aa’ Vu ...

  2. 前端如何搭建vue UI组件库/封装插件(从零到有)

    需求 因之前是做外包项目居多,经常用到相同的组件,之前的办法是在一个项目中写一个组件,其他项目直接将compents下的组件复制,粘贴到项目中使用,缺点是维护起来,改一个项目,其他项目也需要修改,所以 ...

  3. mysql count() 函数,对结果统计计数

    mysql> ; +----------+------------+-----+---------------------+ | name_new | transactor | pid | or ...

  4. PHP 之Mysql优化

    一.建立索引 普通索引 index: 对关键字没有要求. 唯一索引 unique index: 要求关键字不能重复.同时增加唯一约束. 主键索引 primary key: 要求关键字不能重复,也不能为 ...

  5. [Beta]第五次 Scrum Meeting

    [Beta]第五次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/5/13 22:00 30min 大运村公寓6F楼道 附Github仓库:WEDO 例会照片 (一人上 ...

  6. SpringBoot框架 之 Druid与Swagger2

    目录 Druid Druid连接池配置 Druid数据监控 集成Swagger2 Swagger2简介 1.添加依赖 2.创建Swagger2配置类 3.在控制器方法上添加对应api信息 4.启动Sp ...

  7. 团队作业-Beta冲刺(2/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  8. Spring Cloud Eureka配置文件详解

    本篇内容用来说明Eureka 常用配置的含义. 以下配置都是以 eureka.server 开头: 参数 描述 备注 eureka.server.eviction-interval-timer-in- ...

  9. git 清除所有untracked file

    上次合并分支的时候,出现了一些没见过的文件,有.orig等等.如下图: 接下来,就是git的神奇操作命令: git  clean  -f 将所有untracked file 一次性删除

  10. SQL优化:一些简单的又实用的SQL优化方案【转】

    面试过程中,面试官有极高的频率会问道数据库的优化,SQL语句的优化,网上关于SQL优化的教程很多,但是鱼目混杂,显得有些杂乱不堪.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请 ...