unity学习25:用 transform 进行旋转和移动,简单的太阳地球月亮模型,以及父子级关系
目录
备注内容
1游戏物体的父子级关系
1.1 父子物体
1.2 坐标关系
1.3 父子物体实际是用 每个gameobject的tranform来关联的
2 获取gameObject的静态数据
2.1 具体命令
2.2 具体代码
2.3 输出结果
3 获取gameObject 的方向
3.1 游戏里默认的3个方向
3.2 获取方向代码
3.3 输出
4 游戏里的 旋转,朝向
4.1 始终朝向某点:transform.LookAt()
4.2 自转 transform.Rotate()
4.3 公转 transform.RotateAround()
4.4 自转+公转的 Sun- Earth- Moon 效果
5 游戏里的直线移动 transform.Translate()
5 游戏里 gameObject的父子关系
备注内容
- 注释 //
- 注释 /* */ 大段block注释
1游戏物体的父子级关系
1.1 父子物体
- 游戏物体的父子级关系
- 实际是用 每个gameobject的tranform来关联的

1.2 坐标关系
- tranform.position //这个是unity里的绝对位置
- tranform.localPosition //这个是相对于父物体的位置,也是unity编辑器里显示的坐标位置

1.3 父子物体实际是用 每个gameobject的tranform来关联的
- 父子物体实际是用 每个gameobject的tranform来关联的
2 获取gameObject的静态数据
2.1 具体命令
//获取位置
Debug.Log(transform.position); // 返回一个Vector3
Debug.Log(transform.localPosition); // 返回一个Vector3
//获取旋转的四元数,和欧拉角
Debug.Log(transform.rotation); // 返回四元数
Debug.Log(transform.localRotation);
Debug.Log(transform.eulerAngles); // 返回一个Vector3
Debug.Log(transform.localEulerAngles); // 返回一个Vector3
//获取缩放
Debug.Log(transform.localScale); // 返回一个Vector3
2.2 具体代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TransformTest : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){//获取位置Debug.Log(transform.position);Debug.Log(transform.localPosition);//获取旋转的四元数,和欧拉角Debug.Log(transform.rotation);Debug.Log(transform.localRotation);Debug.Log(transform.eulerAngles);Debug.Log(transform.localEulerAngles);//获取缩放Debug.Log(transform.localScale);}// Update is called once per framevoid Update(){}
}
2.3 输出结果

3 获取gameObject 的方向
3.1 游戏里默认的3个方向
- z 蓝色,forward
- X 红色, right
- Y 绿色, up

3.2 获取方向代码,如transform.forward
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TransformTest : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){//获取位置Debug.Log(transform.position);Debug.Log(transform.localPosition);//获取旋转的四元数,和欧拉角Debug.Log(transform.rotation);Debug.Log(transform.localRotation);Debug.Log(transform.eulerAngles);Debug.Log(transform.localEulerAngles);//获取缩放Debug.Log(transform.localScale);//获取方向向量Debug.Log(transform.forward);Debug.Log(transform.right);Debug.Log(transform.up);}// Update is called once per framevoid Update(){}
}
3.3 输出

4 游戏里的 旋转,朝向
4.1 始终朝向某点:transform.LookAt()
//一直面向/朝向某个点
Vector3 pos1=new Vector3(0,0,0);
transform.LookAt(pos1);
- transform.LookAt(Vector3)
- 参数必须是1个 Vector3
- 而Vector3 变量,定义时,必须new1个实例出来用
- Vector3 pos1=new Vector3(0,0,0);
- 测试时注意:如果测试的GB是个球
- 其实,这个物体的3个轴还是不变的,只是球上面的旋转曲线可以看出来,因为始终朝向某个点,所以其实球自身发生了旋转。
4.2 自转 transform.Rotate()
//自转
transform.Rotate(Vector3.up,3f);
- transform.Rotate(Vector3.up,3f);
- 参数1:坐标轴
- 参数2:速度,注意浮点数需要时0.3f这样
4.3 公转 transform.RotateAround()
//公转
transform.RotateAround(Vector3.zero,Vector3.up,0.1f);
- transform.RotateAround(Vector3.zero,Vector3.up,0.1f);
- 参数1:公转的中心点
- 参数2:坐标轴
- 参数3:速度,注意浮点数需要时0.3f这样
4.4 自转+公转的 Sun- Earth- Moon 效果


- 上面是代码测试效果
- Sun放在 Vector(0,0,0) 点
- Earth 挂代码 TransformTest1
- Moon 挂代码 TransformTest1

TransformTest1
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TransformTest1 : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){//一直面向/朝向某个点Vector3 pos1=new Vector3(0,0,0);transform.LookAt(pos1);//自转transform.Rotate(Vector3.up,3f);//公转transform.RotateAround(Vector3.zero,Vector3.up,0.1f);}
}
TransformTest2 其实和 TransformTest1差不多
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TransformTest2 : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){//自转transform.Rotate(Vector3.up,1f);//公转transform.RotateAround(transform.parent.gameObject.transform.position,Vector3.up,0.5f);}
}
5 游戏里的直线移动 transform.Translate()
//直线移动
transform.Translate(Vector3.forward*0.1f);
5 游戏里 gameObject的父子关系
- 修改 Earth的脚本
- //获取父物体,父物体只有1个
- Debug.Log(transform.parent.gameObject);
- //子物体个数
- Debug.Log(transform.childCount);
- //解除与子物体的关系
- transform.DetachChildren();
- //获取子物体,可能有很多个
- Transform tran1=transform.Find("Moon");
- tran1=transform.GetChild(0);
- //判断一个物体是不是另外一个物体的子物体
- //transform默认就是this.transform
- bool res=tran1.IsChildOf(transform);
- Debug.Log(res);
- //设置父物体(设置自身为自己的父物体--没意义只是测试)
- tran1.SetParent(transform);
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TransformTest1 : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){//获取父物体,父物体只有1个Debug.Log(transform.parent.gameObject);//子物体个数Debug.Log(transform.childCount);//接触与子物体的关系transform.DetachChildren();//获取子物体,可能有很多个Transform tran1=transform.Find("Moon");tran1=transform.GetChild(0);//判断一个物体是不是另外一个物体的子物体//transform默认就是this.transformbool res=tran1.IsChildOf(transform);Debug.Log(res);//设置父物体(设置自身为自己的父物体--没意义只是测试)tran1.SetParent(transform);}// Update is called once per framevoid Update(){//一直面向/朝向某个点Vector3 pos1=new Vector3(0,0,0);transform.LookAt(pos1);//自转transform.Rotate(Vector3.up,3f);//公转transform.RotateAround(Vector3.zero,Vector3.up,0.1f);}
}
相关文章:
unity学习25:用 transform 进行旋转和移动,简单的太阳地球月亮模型,以及父子级关系
目录 备注内容 1游戏物体的父子级关系 1.1 父子物体 1.2 坐标关系 1.3 父子物体实际是用 每个gameobject的tranform来关联的 2 获取gameObject的静态数据 2.1 具体命令 2.2 具体代码 2.3 输出结果 3 获取gameObject 的方向 3.1 游戏里默认的3个方向 3.2 获取方向代…...
【项目集成Husky】
项目集成Husky 安装初始化 Husky在.husky → pre-commit文件中添加想要执行的命令 安装 使用 Husky 可以帮助你在 Git 钩子中运行脚本,例如在提交代码前运行测试或格式化代码pnpm add --save-dev husky初始化 Husky npx husky init这会在项目根目录下创建一个 .hu…...
基于Spring Security 6的OAuth2 系列之七 - 授权服务器--自定义数据库客户端信息
之所以想写这一系列,是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级…...
【Matlab高端绘图SCI绘图模板】第006期 对比绘柱状图 (只需替换数据)
1. 简介 柱状图作为科研论文中常用的实验结果对比图,本文采用了3组实验对比的效果展示图,代码已调试好,只需替换数据即可生成相关柱状图,为科研加分。通过获得Nature配色的柱状图,让你的论文看起来档次更高࿰…...
Java 大视界 -- Java 大数据在生物信息学中的应用与挑战(67)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
.NET Core 中依赖注入的使用
ASP.NET Core中服务注入的地方 在ASP.NET Core项目中一般不需要自己创建ServiceCollection、IServiceProvider。在Program.cs的builder.Build()之前向builder.Services中注入。在Controller中可以通过构造方法注入服务。 低使用频率的服务 把Action用到的服务通过Action的参…...
deepseek 潜在变量Z的计算;变分自编码器(VAE); 高斯混合模型(GMM)
潜在注意力:潜在变量 Z Z Z的计算 潜在变量 Z Z Z...
rsync安装与使用-linux015
使用 rsync 可以非常高效地将文件或目录从一个服务器传输到另一个服务器。 能力: 支持 64 位文件、64 位 inode、64 位时间戳、64 位长整型支持套接字对、符号链接、符号链接时间、硬链接、硬链接特殊文件、硬链接符号链接支持 IPv6、访问时间(atimes&…...
CAP 定理的 P 是什么
分布式系统 CAP 定理 P 代表什么含义 作者之前在看 CAP 定理时抱有很大的疑惑,CAP 定理的定义是指在分布式系统中三者只能满足其二,也就是存在分布式 CA 系统的。作者在网络上查阅了很多关于 CAP 文章,虽然这些文章对于 P 的解释五花八门&am…...
【multi-agent-system】ubuntu24.04 安装uv python包管理器及安装依赖
uv包管理器是跨平台的 参考sudo apt-get update sudo apt-get install -y build-essential我的开发环境是ubuntu24.04 (base) root@k8s-master-pfsrv:/home/zhangbin/perfwork/01_ai/08_multi-agent-system# uv venv 找不到命令 “uv”,但可以通过以下软件...
JavaScript原型链与继承:优化与扩展的深度探索
在 JavaScript 的世界里,万物皆对象,而每个对象都有一个与之关联的原型对象,这就构成了原型链的基础。原型链,简单来说,是一个由对象的原型相互连接形成的链式结构 。每个对象都有一个内部属性[[Prototype]]࿰…...
5 长度和距离计算模块(length.rs)
这段代码定义了一个泛型结构体 Length<T, Unit>,用于表示一维长度,其中 T 表示长度的数值类型,而 Unit 是一个编译时检查单位一致性的占位符类型,不会用于运行时表示长度的值。这个设计允许开发者在编译阶段确保不同单位之间…...
ollama改模型的存盘目录解决下载大模型报c:盘空间不足的问题
使用Ollama和Open WebUI快速玩转大模型:简单快捷的尝试各种llm大模型,比如DeepSeek r1,非常简单方便,参见:使用Ollama和Open WebUI快速玩转大模型:简单快捷的尝试各种llm大模型,比如DeepSeek r1…...
OSCP:常见文件传输方法
在渗透测试过程中,文件传输是一个关键环节,涉及不同的协议和工具,本文整理了 Linux 和 Windows 系统下常见的文件传输方法,并提供相应的命令示例。 通用文件传输方式 Base64 编码传输 Base64 可用于跨平台传输文件,…...
B站吴恩达机器学习笔记
机器学习视频地址: 4.5 线性回归中的梯度下降_哔哩哔哩_bilibili 机器学习分类: 1. 有监督学习(Supervised Learning) 在有监督学习中,训练数据包含了输入特征和正确的输出标签,模型通过这些带有标签的…...
Java 性能优化与新特性
Java学习资料 Java学习资料 Java学习资料 一、引言 Java 作为一门广泛应用于企业级开发、移动应用、大数据等多个领域的编程语言,其性能和特性一直是开发者关注的重点。随着软件系统的规模和复杂度不断增加,对 Java 程序性能的要求也越来越高。同时&a…...
【计算机网络】host文件
host文件的主要功能: 域名解析 本地映射:host文件的主要功能是将**域名映射到相应的 IP 地址**。当计算机需要访问一个网站或服务时,它会首先在 host文件中查找该域名对应的 IP 地址。如果在 host文件中找到了匹配的域名和 IP 地址映射&…...
【C语言】在Windows上为可执行文件.exe添加自定义图标
本文详细介绍了在 Windows 环境下,如何为使用 GCC 编译器编译的 C程序 添加自定义图标,从而生成带有图标的 .exe 可执行文件。通过本文的指导,读者可以了解到所需的条件以及具体的操作步骤,使生成的程序更具专业性和个性化。 目录 1. 准备条件2. 具体步骤步骤 1: 准备资源文…...
爬虫基础(五)爬虫基本原理
目录 一、爬虫是什么 二、爬虫过程 (1)获取网页 (2)提取信息 (3)保存数据 三、爬虫可爬的数据 四、爬虫问题 一、爬虫是什么 互联网,后面有个网字,我们可以把它看成一张蜘蛛网…...
力扣【1049. 最后一块石头的重量 II】Java题解(背包问题)
让石头分成重量相同的两堆(尽可能相同),相撞之后剩下的石头就是最小的。进一步转化成容量为重量总喝一半的背包最多可以装多少质量的石头。这样就转化成了背包问题。 最后求结果时,我们所最多能装的时dp[target],那另一…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
