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],那另一…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
