Unity 之 transform.rotate() 实现旋转

news/2025/3/14 22:53:46/

文章目录

  • 详细介绍
  • 默认情况下,以局部坐标

在这里插入图片描述

详细介绍

在Unity中,Transform.Rotate() 是一个用于在物体上进行旋转的函数。它可以用来在局部坐标系下对物体进行旋转,也可以在世界坐标系下进行旋转。下面是关于 Transform.Rotate() 的详细介绍:

函数签名:

public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);

参数:

  • eulerAngles: 一个表示旋转欧拉角的 Vector3。这是旋转的角度,分别围绕物体的X、Y和Z轴。单位为度。
  • xAngle, yAngle, zAngle: 分别表示围绕X、Y和Z轴旋转的角度。单位为度。
  • relativeTo: 可选参数,指定旋转是基于局部坐标系(Space.Self)还是基于世界坐标系(Space.World)。默认为基于局部坐标系。

使用示例:

using UnityEngine;public class RotateObject : MonoBehaviour
{public float rotationSpeed = 60.0f;// Update is called once per framevoid Update(){// 在局部坐标系下绕Y轴旋转transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime);// 在世界坐标系下绕X轴旋转transform.Rotate(Vector3.right * rotationSpeed * Time.deltaTime, Space.World);}
}

说明:

  • 当你调用 Rotate() 函数时,它会根据传递的角度参数来执行旋转操作。旋转是增量性的,即每次调用都会将物体旋转一个特定的角度。
  • 你可以使用 Vector3 来表示旋转的欧拉角,也可以分别传递X、Y、Z轴的旋转角度。
  • relativeTo 参数用于指定旋转是基于局部坐标系还是世界坐标系。默认情况下,使用局部坐标系。
  • 这个函数通常在物体的更新循环中调用,例如 Update() 函数中,以便在每一帧更新物体的旋转。

请注意,使用 Rotate() 函数进行旋转时,也需要注意万向锁问题,特别是在局部坐标系下。如果你需要在复杂的旋转操作中避免万向锁问题,通常建议使用四元数(Quaternion)来执行更稳定的旋转。

默认情况下,以局部坐标

Transform.Rotate() 函数的默认行为是在局部坐标系下执行旋转。如果没有显式指定第二个参数 relativeTo,它将默认使用局部坐标系来执行旋转操作。这意味着旋转将基于物体自身的坐标轴进行,而不受其父物体的影响。

例如,在以下代码中:

transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime);

如果没有提供 relativeTo 参数,这个旋转操作将在物体的局部坐标系下绕Y轴进行,不受物体的父物体影响。

如果你想要在世界坐标系下进行旋转操作,你可以明确指定 relativeTo 参数为 Space.World,就像这样:

transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.World);

在总结中,Transform.Rotate() 函数默认使用局部坐标系进行旋转,但你可以通过设置 relativeTo 参数来改变旋转坐标系。


http://www.ppmy.cn/news/1061575.html

相关文章

axios 二次封装

axios 二次封装 基本上每一个项目开发,都必须要二次封装 axios。主要是为了减少重复性工作,不可能每一次发起新请求时,都要重新配置请求域名、请求头 Content-Type、Token 等信息。所以需要把公用的部分都封装成一个函数,每次调用…

虚拟新世界:VR、AR及AI如何塑造我们的未来

虚拟新世界:VR、AR及AI如何塑造我们的未来 目录 引言:未来技术的前沿VR、AR与AI的定义和区别VR、AR与AI能为人类带来什么VR、AR、AI在可预期的时间内的落地可能性对未来的影响结语:技术的可能与责任 1. 引言:未来技术的前沿 在…

Python如何进行基本的数学运算

Python进行基本的数学运算 Python是一门功能强大且易于学习的编程语言,它不仅可以用于开发应用程序,还可以用于执行各种数学运算。让我们一起来看看如何在Python中进行基本的数学运算。 加法、减法、乘法和除法 Python支持常见的加法、减法、乘法和除…

Django基础4——模板系统

文章目录 一、基本了解1.1 引用变量1.2 全局变量 二、if判断2.1 语法2.2 案例 三、for循环3.1 语法3.2 案例3.3 forloop变量3.4 容错语句 四、过滤器4.1 内置过滤器4.2 自定义过滤器 五、模板继承六、模板导入七、引用静态文件 一、基本了解 概念: Django模板系统&a…

【ES5】—ES5中类与继承

一、如何定义类 类的首字母要大写,用于识别出与普通函数的不同 // 类 构造函数 function People () {this.name xiaoxiaothis.age 18 } // 实例化对象 let p1 new People()二、动态属性和方法 1. 动态属性再构造函数里面定义 // 类 function People (name, …

❤ Ant Design Vue 2.28的使用

❤ Ant Design Vue 2.28 弹窗 //按钮 <a-button type"primary" click"showModal">Open Modal</a-button>//窗口 <a-modal v-model:visible"visible" title"Basic Modal" ok"handleOk"><p>Some con…

计算机竞赛 基于大数据的时间序列股价预测分析与可视化 - lstm

文章目录 1 前言2 时间序列的由来2.1 四种模型的名称&#xff1a; 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &…

Qt 打开文件列表选择文件,实现拖拽方式打开文件

1. 实现打开文件列表选择文件 1.1. 创建 Qt 工程&#xff0c;并添加几个简单控件 这里笔者选用的是 QMainWindow&#xff0c;创建好工程后在 ui 界面设计中添加 QLineEdit、QPushBtton至少这两个控件&#xff0c;如下图摆放。 1.2. 头文件中添加相关操作 在 mainwindow.h 中…