【Unity入门】脚本控制物体旋转
大家好,我是Lampard~~
欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢
(一)控制物体自转
(1)创建RotateLogic脚本
上一篇文章我们学习了如何在脚本中获取物体对象,并使用transform组件下的translate接口使物体运动
今天我们进一步学习,用脚本控制物体的旋转。首先需要借助一个风扇的模型便于观察:
然后创建一个脚本RotateLogic挂在风扇上面,这个脚本的start方法和FirstLogic的一样可以读一下物体的名字看看有没有问题,设定一秒60帧,然后准备重写一下它的update方法就可以了
(2)欧拉角
按照我们设置Position的思路,是不是在update新建一个Rotation的值,然后重新赋值给物体对象就可以了?
然鹅并没有那么简单,在unity中Rotation并不是我们看到的三元值,而是一个四元组成的值,我们并不容易,且官方也不推荐我们直接修改rotation这个值
那没有办法了吗?unity给我们提供了一个叫欧拉角的三元数,我们可以对transfrom组件下的欧拉角进行修改就可以实现我们对xyz方向的旋转
下面是欧拉角localEulerAngles的简介:
Unity中的欧拉角指的是物体绕三个坐标轴旋转的角度,分别称为俯仰角、偏航角和翻滚角。俯仰角是指物体绕x轴旋转的角度,偏航角是指物体绕y轴旋转的角度,翻滚角是指物体绕z轴旋转的角度。欧拉角的旋转顺序有多种,Unity中默认的旋转顺序是ZXY(翻滚角-俯仰角-偏航角)。在Unity中,我们可以使用Transform组件的eulerAngles属性来设置和获取物体的欧拉角值。
(3)让风扇旋转起来
接下来就很简单了,仿照Position的做法,比如我们想让风扇1秒转一圈,那一帧就是就是跑360 * Time.deltaTime的角度,代码如下:
void Update(){Vector3 angles = this.transform.localEulerAngles;angles.y += 360 * Time.deltaTime;this.transform.localEulerAngles = angles;}
看看效果:
(4)transform.Rotate
那有没有像translate这样方法,根据偏移值来设置物体的旋转呢?巧了,那就是transform.Rotate这个接口,它可以直接传入欧拉角的偏移值
因此我们的三行代码就可以优化成一行:
void Update(){this.transform.Rotate(0, 360 * Time.deltaTime, 0);}
(二)地月系统旋转
(1)地球自转
接下来我们想实现地月系统旋转,首先第一步就是让地球自转起来,那很简单,我们把RotateLogic脚本挂在地球上就可以了
嗯…有点快,我们把速度调低一些。缩小个4倍吧,让它四秒转一圈,看上去好多了
(2)月亮公转
下一步就是实现月球的公转了,那要如何做呢?直接把RotateLogic挂给月亮也只是实现自转。这个时候我们就应该想起我们的父子关系
如果月亮是地球的子节点,那地球转的时候就可以带动月亮转了
但是问题来了,这样子的话月亮绕地球的转速就和地球自转的速度一样,我们知道地球一转一天,月球绕地球一周是需要27天的,速率明显不一样
这个时候我们只需要在地球的位置挂载一个空节点作为旋转节点,调整其旋转速率,并让月亮成为它的子节点就可以了
随便把速度设置为地球的三分一,看看效果:
好啦今天就到这里,感谢阅读!!!
点赞,关注!!!
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2307889.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
【Unity入门】11.脚本控制物体旋转
【Unity入门】脚本控制物体旋转 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)控制物体自转
(1)创建RotateLogic脚本 上一篇文章我们学习了如何在脚本中获取物体对象……
设计模式之中介者模式(C++)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、中介者模式是什么? 中介者模式是一种行为型的软件设计模式,也称为仲裁者模式,顾名思义&am……
crm系统有哪些?具体的功能有哪些?
市面上的CRM系统有很多,例如简道云、销售易、salesforce、纷享销客、SugarCRM等等,这些都是比较知名的,前面也有写过很多关于CRM选型的内容,大家可以点进我的主页翻阅一下。
那么,CRM具体的功能有哪些?下面……
14岁开始创业,互联网“老兵”
14岁开始创业,互联网“老兵”
我是韩国人釜山人,我从小就开始写代码。
七岁的时候我开始接触电脑,八岁写代码,初中开过一家互联网公司。
我跟我爸借了三千美元,1999年时我跟两个朋友一起,租服务器&#……
讽德诵功电饭锅 好
又是一个阳光明媚的周末,农村学校一到周末就寂静得很。儿子一大早跟着他
爸
上山帮农活去了,我本是庄农人,可腿痛没法走,只有干力所能及的事,把该洗的衣服洗了,挂在外边的电线上。房子前的一棵杏树花开得正……
stata变量引用
stata变量引用–潘登同学的stata笔记 文章目录stata变量引用–潘登同学的stata笔记变量生成gen命令通配符:*, ?, -因子变量时间序列变量命名、前缀与标签变量命名、添加前缀通配符与批量重命名变量标签数字-文字对应表CSMAR数据处理查看、查找变量单值、暂元单值暂……
IMX6ULL中断之复位中断函数实现
一. 复位中断函数 开发板一上电或者进行一次复位操作,其就会执行复位中断函数。复位中断函数可能需要实现的一些功能,包括进入 SVC(特权)模式,清除 bss段,设置 SP指针等。 二. 复位中断函数实现 1. 复位……
基于决策树及集成算法的回归与分类案例
基于决策树及集成算法的回归与分类案例
描述
本任务基于决策树及集成算法分别实现鲍鱼年龄预测案例和肿瘤分类案例。鲍鱼年龄预测案例是建立一个回归模型,根据鲍鱼的特征数据(长度、直径、高度、总重量、剥壳重量、内脏重量、壳重)等预测其……
ONES × 中国信通院《中国企业软件研发管理白皮书》即将发布 | 预约直播
由 ONES 与中国信息通信研究院联合发起的《中国企业软件研发管理白皮书》(下称「白皮书」)将于 4 月 20 日 正式发布。白皮书由 ONES、中国信息通信研究院云计算与大数据研究所、招商基金管理有限公司、紫金财产保险股份有限公司、深圳市鸿合创新信息技术……
GPT 任务指令 = 定义角色 + 背景信息 + 任务目标 + 输出要求
GPT 任务指令 定义角色 背景信息 任务目标 输出要求
环境 GPT-4
0. 你是一名专业的导游,负责为我生成旅游计划,现在我来北京旅游,需要你为我生成一份 3天2晚的北京旅游规划。我的要求是:1.地点包括故宫、军播和环球影城。 2……
手把手教你Temporal Fusion Transformer——Pytorch实战
建立了一个关于能源需求预测的端到端项目: 如何为 TFT 格式准备我们的数据。 如何构建、训练和评估 TFT 模型。 如何获取对验证数据和样本外预测的预测。 如何使用built-in model的可解释注意力机制计算特征重要性、季节性模式和极端事件鲁棒性。
什么是Temporal F……
【Java开发】设计模式 12:解释器模式
1 解释器模式介绍
解释器模式是一种行为型设计模式,它提供了一种方法来解释语言、表达式或符号。
在该模式中,定义了一个表达式接口,并实现了对应的表达式类,这些类可以解释不同的符号组成的表达式,从而实现对语言的……
反序列化渗透与攻防(五)之shiro反序列化漏洞
Shiro反序列化漏洞
Shiro介绍
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默……
vue2+vue3
vue2vue3尚硅谷vue2vue2 课程简介【02:24】vue2 Vue简介【17:59】vue2 Vue官网使用指南【14:07】vue2 搭建Vue开发环境【13:54】vue2 Hello小案例【22:25】了解: 不常用常用:id 更常用 简单class差值总结vue 实例vue 模板 : 先 取 ࿰……
【hello Linux】环境变量
目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux🌷 在开始今天的内容之前,先来看一幅图片吧! 不知道你们是否和我一……
【Linux基础】常用命令整理
ls命令
-a选项,可以展示隐藏的文件和文件夹-l选项,以列表形式展示内容-h,需要和-l搭配使用,可以展示文件的大小单位ls -lah等同于la -a -l -h
cd命令(change directory)
语法:cd [Linux路径]……
客快物流大数据项目(一百一十二):初识Spring Cloud
文章目录
初识Spring Cloud
一、Spring Cloud简介
二、SpringCloud 基础架构图…
C和C++中的struct有什么区别
区别一: C语言中: Struct是用户自定义数据类型(UDT)。 C语言中: Struct是抽象数据类型(ADT),支持成员函数的定义。
区别二:
C中的struct是没有权限设置的,……
docker的数据卷详解
数据卷 数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载,一个容器也可以被挂载多个数据卷
数据卷作用:容器数据持久化 /外部机器和容器间接通信 /容器……
13、Qt生成dll-QLibrary方式使用
Qt创建dll,使用QLibrary类方式调用dll
一、创建项目
1、新建项目->其他项目->Empty qmake Project->Choose 2、输入项目名,选择项目位置,下一步 3、选择MinGW,下一步 4、完成 5、.pro中添加TEMPLATE subdirsÿ……
编程日记2023/4/16 14:50:38