【Unity入门】11.脚本控制物体旋转

news2024/12/25 9:34:47

【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.coloradmin.cn/o/417275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端工具】使用真机在chrome远程调试

手机端需要做的事 手机上下载chrome浏览器 手机开启“开发者模式” 具体步骤各个品牌手机不太一样,华为手机为例: 打开手机上的 “设置” 图标, 进入最下方 “系统” 选项, 再点击最上方 “关于手机”, 接着连续点击 …

(十八)排序算法-计数排序

1 基本介绍 1.1 概述 计数排序是一个非基于比较的排序算法,元素从未排序状态变为已排序状态的过程,是由额外空间的辅助和元素本身的值决定的。该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度…

一文解读基于PaddleSeg的钢筋长度超限监控方案

项目背景 钢铁厂生产钢筋的过程中会存在部分钢筋长度超限的问题,如果不进行处理,容易造成机械臂损伤。因此,需要通过质检流程,筛选出存在长度超限问题的钢筋批次,并进行预警。传统的处理方式是人工核查,该方…

数组(九)-- LC[316][321][402] 去除重复字母

1 移掉 K 位数字 1.1 题目描述 题目链接:https://leetcode.cn/problems/remove-k-digits/ 1.2 思路分析 这道题让我们从一个字符串数字中删除 k 个数字,使得剩下的数最小。也就说,我们要保持原来的数字的相对位置不变。 以题目中的 num1432…

深度学习第J5周:DenseNet+SE-Net实战

目录 一、介绍 二、前期准备 二、模型 三、训练运行 3.1训练 3.2指定图片进行预测 🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者:[K同学啊] 📌 本周任务&…

网络安全之防火墙

目录 网络安全之防火墙 路由交换终归结底是联通新设备 防御对象: 定义: 防火墙的区域划分: 包过滤防火墙 --- 访问控制列表技术 --- 三层技术 代理防火墙 --- 中间人技术 --- 应用层 状态防火墙 --- 会话追踪技术 --- 三层、四层 UTM…

【手把手带你五分钟手机端注册使用GPT的强力对手Claude,免费,无任何成本】

前言 今天刷到了号称是媲美GPT-4的Claude介绍,无需魔法,无任何成本即可以使用,果断尝试注册使用,效果确实不错,关键是免费无成本!!! Claude使用的是Constitutional AI模型。ChatGPT…

亚马逊平台快速消耗滞销品的七大方式

一、亚马逊后台直接进行清仓 1、卖家和商品的资格 在管理多余库存页面上,可以查看亚马逊根据买家需求和其他因素推荐了哪些符合要求的商品参加清仓计划。商品当前价格下的消息将显示商品是否符合清仓促销要求(通过创建清仓促销提交)或清仓店铺要求(通过创建销售提…

Windos下设置java项目开机自启动

这里是将java项目注册为Windows服务实现开机自启动。 查看.NET framework版本 因为使用winsw工具运行时需要使用.NET framework,基本上现在的win10系统带自带有.NET framework4.0,为了选择合适的版本,我们可以查看本机.NET Framework版本,根…

差速巡线机器人设计-良好(80+)的报告-2023

如何提分?将一篇报告提升20分以上呢?差速巡线机器人设计-及格(60)的报告-2023_zhangrelay的博客-CSDN博客姓名: 学号: 实践项目1名称:差速巡线机器人设计 60分:缺乏思考、没有对比、…

恒生电子面试题总结

CPU突然飙升,如何排查 1.监控cpu运行状态,显示进程运行信息列表 top -c 2. 按CPU使用率排序,键入大写的P P 3.用 top -Hp 命令查看占用 CPU 最高的线程 上一步用 top命令找到了那个 Java 进程。那一个进程中有那么多线程,不可…

[oeasy]python0132_[趣味拓展]emoji_表情符号_抽象话_由来_流汗黄豆

emoji表情符号 回忆上次内容 上次了解了unicode 和 utf-8 unicode是字符集utf-8是一种可变长度的编码方式utf-8是实现unicode的存储和传输的现实的方式 "拜"字 unicode编码是0x62dcutf-8字节形式是b"\xe6\x8b\x9c" 如果我想看看 b"\x62\xdc"用…

准确率、精确率、召回率、F1score和混淆矩阵

准确率和PR、confusion matrix的概念初次接触是在六年前,2017着手在做激光雷达点云处理的相关事宜,六年时光不长,却有很多事情发生。 精确率 precision 也叫查准率,即正确预测为正的占全部预测为正的比例(不准错,宁愿…

图解redis发布和订阅

目录 1.什么是发布订阅 1.1概念 1.2发布订阅过程 1.3发布订阅分为两类 2. 频道的订阅与退订 2.1subcribe 2.2退订频道 3. 模式的订阅和退订 3.1模式的订阅 3.2punsubscribe 4.频道和模式的发布 4.1频道的发布 4.2模式的发布 1.什么是发布订阅 1.1概念 1.发布订阅…

【电源专题】案例:充电芯片如何配置NTC偏置网络设定充电温度区间

背景 充电芯片是需要检测电池内部的NTC电阻来得到电池此时的温度,然后根据温度来判断自己是否要进行充电。因此在导入充电芯片过程中,我们需要设置NTC的偏置网络来设定能充电的温度范围。如下图所示为SGM41523芯片的典型应用图: RT1和RT2为NTC的偏置网络。 在规格书的更详细…

【U8+】修改用友U8+填制凭证界面字体大小

【问题描述】 在使用用友U8软件填制凭证功能时, 觉得【填制凭证】界面字体太小,看着不方便。 想要进行调整。 【解决方法】 1、打开填制凭证界面, 点击最上方【选项】按钮; 2、在弹出的凭证选项设置窗口中, 找到【凭…

PHP语言请求示例,电商商品详情接口(item_get-根据ID取商品详情)代码封装教程

item_get-根据ID取商品详情接口 通过代码封装该接口可以拿到商品标题,商品价格,商品促销信息,商品优惠价,商品库存,sku属性,商品图片,desc图片,desc描述,sku图片&#xf…

抓包工具Wireshark安装与使用

windows下安装 下载安装包 Npcap wireshark依赖于Npcap或者Winpcap软件捕获网络实时数据。这里选择Npcap。下载地址:https://npcap.com/#download。Wireshark Wireshark是一个开源的网络数据包分析器。该分析器尽可能详细地展示捕获的包数据。下载地址&#xff1a…

C++ 数组、指针、数组指针、指针数组、多级指针、STL-map、结构体 的 初始化 及其 初始化赋值

C 数组、指针、数组指针、指针数组、多级指针、STL-map、结构体 的 初始化 及其 初始化赋值C 数组、指针、数组指针、指针数组、多级指针、STL-map、结构体 的 初始化 及其 初始化赋值C 数组、指针、数组指针、指针数组、多级指针数组一维数组初始化:二维数组初始化…

8.1 假设验证的基本概念

学习目标: 要学习假设检验的基本概念,我会按照以下步骤进行: 了解假设检验的基本概念:假设检验是一种统计推断方法,用于判断某个假设是否成立。一般来说,假设检验包括原假设和备择假设两个假设&#xff0c…