手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(二)

简介: 手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)

1.3 创建时钟的其他部分


钟盘上一般都会有一些标识来帮助时钟展示时间,我们一般称之为外围。那么我们就把它的 12 个小时的显示做出来。

我们通过 GameObject → 3D Object → Cube 的方式,来创建一个立方体。把它的 scale 设置为 (0.5, 0.2, 1),这样我们就可以得到一个窄的、扁的长条。下一步把它放置在钟盘上,设置 position 到 (0, 0.2, 4),这就是小时的指示器了。我们把它的名字改为 Hour Indicator。

image.png

现在有了一个新问题,这个小时指示器颜色和背景太像了,很难区分。我们可以给它重新创建一个材质。点击 Assets → Create → Material 或者右击 Project 窗口,然后我们会得到一个默认材质球的副本。把它的 Albedo 的颜色修改的深一些,比如 RGB 值都设置为 73。这就是一个深灰色的材质了,把它的名字修改成 Clock Dark。

24496e84e072434983d8555abb29ec55.png

Q&A:什么是 Albedo?

Albedo 是拉丁语,意识是白的程度,你可以简单的理解为材质的颜色。

材质球创建好了之后,我们就可以通过拖拽这个材质球到 hierarchy 窗口,或者拖拽它到 inspector 窗口,或者直接改变 Hour Indicator 的 mesh renderer 组件下的 Materials 数组中第一个元素。

image.png

我们的钟盘上是有 12 个小时的,那么我该如果表示它是小时 1 呢?很简单,钟盘有 360 度,一共 12 小时,所以每个指示器旋转 30 度就可以了。试试看,旋转 Y 轴 30 度。

image.png

上面有了理论基础之后,我们看到指示器的位置还是在 12 点钟的位置,这是为什么呢?因为所有的 rotation 都是相对于它自己的原点的,也就是它的位置。


我们需要把指示器沿着表盘的的边布置,并且让它对齐到 1 点钟的位置上。有个取巧的办法就是让 hierarchy 帮我们自动排布。


首先我们把刚才指示器设置的 rotation 归 0,然后创建一个新的空的 GameObject,它的 position 和 rotation 为 0 ,scale 为 1。然后把 indicator 拖拽到它下面,变成它的子节点。


现在我们把父节点的 rotation 的 Y 设置到 30 度。前面我们说过父节点的变化会影响子节点,所以自然的小时指示器也会被旋转了,这就是我们想要的效果了。


复制刚才的模板组,windows 上的快捷键为 Ctrl+D(MAC 上为 Command+D),每一个新复制出来的都增加 30 度,这样我们就能制作完整的 12 个小时的了。

image.png

这个时候,我们就不再需要这个临时的模板组了,选择所有的 hour indicators,把它们全部拖拽到 clock 的对象下面,让它们成为 clock 的一部分。当我们拖拽的时候,hour indicators 的父节点会发生改变,但是 Unity 会自动转换它们的变换信息来确保即使修改了父节点也不影响它们在场景里的世界坐标。并且自动帮你转化到当前的父节点下。


你可以通过按住 Ctrl 或者 command 键来一次选择多个物体进行操作。

image.png

Q&A:如果我看到一些像 90.00001 这样的值,有问题吗?


这个是因为所有的 position, rotation, 和 scale 都是用浮点型的数据表示的。每个浮点型都会有一些精度限制,有可能你看到的值会超出你的预期,但是就事实而言,你不用担心 0.00001 这样的精度问题。

1.4 创建指针


我们可以用相同的方式来创建时钟的指针。创建另外一个 cube,然后把名字改为 Arm,给它们换上和小时指示器相同的深色的材质球。把它的 scale 设置为 (0.3, 0.2, 2.5),变成一个比指示器还长的长条,把 position 设置为 (0, 0.2, 0.75),这样它就显示在表盘上面,并且指向 12 点钟方向了。

c9c4aa3d28414e6b8469f266447e80d8.png

要让时针以钟盘中心为圆点进行旋转,我们需要给它创建一个父节点。就像我们刚才给指示器创建的那样,同样的记得要重置 transform 下面的 position 、rotation 和 scale。它和指示器不一样,指示器只是一个固定位置,但是时针是需要旋转的,所以这个 parent 不能删除,我们把它重新命名一下改为 Hours Arm,所以这个时候,原先的 Arm 节点就变成了 clock 的孙节点了。


复制 Hours Arm 两次,来创建 Minutes Arm 和 Seconds Arm。分针要比时针更长更细,所以我们设置一下 它的 scale 到 (0.2, 0.15, 4) 并且 position 为 (0, 0.375, 1)。


同样的,设置一下 Seconds Arms,scale (0.1, 0.1, 5) ,position (0, 0.5, 1.25)。为了更明显的区分秒针,重新建了一个红色的材质球,RGB 值为(197, 0, 0),然后给 Arm 换上。

06b5eb29f2d543f9ba59a11a85745405.png

现在,我们的时钟已经创建好了,如果你也完成了的话,这个时候去保存场景就再好不过了,这里我保存一下工程。


如果你自己照着做了,或者想跳过刚才制作场景的步骤,那么没关系,你可以直接用我创建的,后面会给出下载方式。你可以把这些 packages 直接导入到你的工程里去,方法为 Assets → Import Package → Custom Package..., 然后拖拽 packages 到窗口上,或者双击文件浏览选中。

目录
相关文章
|
缓存 JavaScript 前端开发
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(三)
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)
581 1
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(三)
|
编解码 C# 图形学
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(一)
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)
489 0
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(一)
“你那么强,能不能用Unity做时钟”,“嗨,这有啥难”
又见面了哈,今天为大家介绍时钟、钟表的实现方法教程。 实现的方法有很多,这里只是提供了一个思路,本着抛砖引玉的心态,希望能和大家共同学习。
|
图形学
Unity3D深入浅出 - 脚本开发基础(Scripts)
常用脚本事件: Update:每帧调用一次 Start:在第一次Update执行前调用 Awake:脚本实例在创建时调用 FixedUpdate:每个固定物理时间间隔调用一次 LateUpdate:每帧调用一次,在Update之后 MonoBehaviour类: MonoBehaviour类是uniyt中非常重要的类,定义了基本的脚本行为,所有脚本类均需要从它直接或间接继承。
5899 0
|
图形学 容器
使用Unity制作一个时钟
创建时钟 让我们创建一个新的工程。默认的场景中包含一个position为(0,1,-10)的相机。在相机视口中可以看到场景的一部分,选择这个相机,然后选择菜单中的 GameObject / AlignView便能获得你想看到场景中的某个部分。
2013 0
|
Android开发 图形学 C#
|
11月前
|
机器学习/深度学习 人工智能 图形学
卓伊凡的第一款独立游戏-详细介绍游戏开发引擎unity-以及详细介绍windows和mac的安装步骤【01】
卓伊凡的第一款独立游戏-详细介绍游戏开发引擎unity-以及详细介绍windows和mac的安装步骤【01】
771 9
|
11月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
1656 6
|
图形学 缓存 算法
掌握这五大绝招,让您的Unity游戏瞬间加载完毕,从此告别漫长等待,大幅提升玩家首次体验的满意度与留存率!
【8月更文挑战第31天】游戏的加载时间是影响玩家初次体验的关键因素,特别是在移动设备上。本文介绍了几种常见的Unity游戏加载优化方法,包括资源的预加载与异步加载、使用AssetBundles管理动态资源、纹理和模型优化、合理利用缓存系统以及脚本优化。通过具体示例代码展示了如何实现异步加载场景,并提出了针对不同资源的优化策略。综合运用这些技术可以显著缩短加载时间,提升玩家满意度。
1985 6

热门文章

最新文章