【unity】【C#】变换组件 Transform 和 V3结构体

这篇具有很好参考价值的文章主要介绍了【unity】【C#】变换组件 Transform 和 V3结构体。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


注意看代码的注释块

如何获得其它物件的 Transform

我们先按下述代码用 Transform 方法创建一个 emptyTform ,使得该对象能够获得其他物件 Transform 的机会

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EP20_01_Transform : MonoBehaviour
{
    public Transform emptyTform;//emptyTform为自命名
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

保存代码后,再将想要获取 Transform 值的物件直接拖拽到这里
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎
我们尝试通过 Transform 获取一下这个对象的名字,在 start 里加上语句

void Start()
{
    Debug.Log(emptyTform.name);
}

保存后去启动unity,成功打印!
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎
同理我们再在 start 里加上语句

Debug.Log(emptyTform.position);

保存后调用,也成功地调用出了这个对象的位置
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎

【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎


关于第二个旋转角度 rotation 我们有两种常见的表示方法,同样将这两句代码按顺序写入 start

        Debug.Log(emptyTform.rotation);//表示旋转角度 - 4位数
        Debug.Log(emptyTform.eulerAngles);//表示旋转角度 - 3位数

【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎

然后缩放 scale 的输出同理,仅一种,不演示了

        Debug.Log(emptyTform.localScale);//表示缩放

通过 Transform 调用子类

child拼太快,都错了,谅解…

关于子类物体的 Transform 调用,就不需要将其拖进该对象 Transform 方法中
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎

这里在 start 语句中写入语句,尝试调用子类的名字

        Debug.Log(transform.GetChild(0).name);//0表示索引,即子类的第n-1个//这里调用一下子类的名字

成功,同理 GetChild(索引) 的方法同样适用于其他子类对象的调用
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎
调用子类还有第二种方法,在 start 语句中写入语句(ctrl + D 复制)

        Debug.Log(transform.Find("chlid (3)").name);//第二种找子类的方法

这里需要注意的是字符串的查找十分严格,必须与子类对象名一模一样才能查找到,否则报错
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎
保存后调试,成功
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎

不仅如此,我们还可以通过子对象去调用父类对象

        Debug.Log(transform.Find("chlid (3)").parent);//找父类对象             

注意点跟上面一样,不过多赘述

补充一点: Transform 还可以调用对象的组件,而且可以进行更改
我们在 chlid (2) 里创建上 新组件 SpriteRenderer
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎
通过语句

        transform.Find("chlid (2)").GetComponent<SpriteRenderer>().flipY = true;

成功
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎


通过 V3 结构体改变对象位置

相当于自定义一个向量,比如下面的代码,我们将鼠标放在 Vector3 上点击 F12 可以转到反汇编,发现 Vector3 是有三个值,分别赋值

        Vector3 vector3 = new Vector3();
        vector3.x = 1;
        vector3.y = 2;
        vector3.z = 3;
        Debug.Log(vector3);

【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎
成功打印出来我们自定义的向量值
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎

但是这种自定义一个变量的方法肯定是无用的,但是我们可以通过向量来改变这个对象的位置

        Debug.Log(transform.position);//打印原先对象的位置
        transform.position = new Vector3(0,0,0);
        Debug.Log(transform.position);//打印改变后的位置

【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎

为了使这种变化更直观,我们在代码的开头为这个对象 EP20_01_Transform 创建一个新的 Transform

    public Transform cubeTform;

建立一个新对象 cube 拖拽进 EP20_01_Transform 的新的 Transform
并在 Update 中加入如下代码

        cubeTform.position = cubeTform.position + new Vector3(0,0,0.1f);
        //每一帧这个对象的z坐标加1(向后)
        //等价于 cubeTform.position += new Vector3(0,0,0.1); 
        Debug.Log(cubeTform.position);//打印每帧改变后的位置

因为运动不方便以静图的形式表示,所以这里我们打印每一帧的位置,如果你有一同操作,也能够发现这里的立方体以肉眼可见的速度迅速向后退去
【unity】【C#】变换组件 Transform 和 V3结构体,unity/C#,unity,c#,游戏引擎
如果你觉得运行速度太快,不想以帧为单位,换为秒的话,只需要在V3结构体后乘上 Time.deltaTime

        cubeTform.position = cubeTform.position + new Vector3(0, 0, 0.1f) * Time.deltaTime;
        //每一秒这个对象的z坐标加1(向后)

这是改变位置,同理我们可以通过V3结构体对对象进行角度的变化或者缩放

        cubeTform.eulerAngles += new Vector3(0, 90, 0) * Time.deltaTime;//变换角度
        cubeTform.localScale += new Vector3(1f, 0, 0) * Time.deltaTime;//缩放

这串代码写入后,这个立方体会不断一边旋转一边缩放文章来源地址https://www.toymoban.com/news/detail-853038.html

到了这里,关于【unity】【C#】变换组件 Transform 和 V3结构体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • unity 之Transform组件(汇总)

    unity 之Transform组件(汇总)

    当在Unity中处理3D场景中的游戏对象时, Transform 组件是至关重要的组件之一。它管理了游戏对象的位置、旋转和缩放,并提供了许多方法来操纵和操作这些属性。以下是关于 Transform 组件的详细介绍: 位置(Position): Transform 组件的 position 属性表示游戏对象在世界坐标系中

    2024年02月04日
    浏览(23)
  • 第十一章 Unity Transform组件(上)

    第十一章 Unity Transform组件(上)

    本章节我们介绍Transform类,它是一个组件,每一个游戏对象有拥有该组件。因此,它值得我们重点介绍一下。Transform代表了游戏对象的世界变换,也就是移动,选择和缩放。 首先,我们先介绍它的属性(类变量),如下所示 1. gameObject 附加到的当前游戏对象,来自父类Compo

    2024年02月05日
    浏览(14)
  • 第十二章 Unity Transform组件(下)

    第十二章 Unity Transform组件(下)

    上一章节中我们介绍了Transform组件的属性和方法。我们发现 Transform 中有right,up和forward,而 Vector3 类中也有right,up和forward,他们是一回事嘛?我们使用Forward来说明两者之间的区别。我们知道,改变游戏对象的position位置,就可以形成移动效果。如果我们让游戏对象沿着for

    2024年02月04日
    浏览(15)
  • 【unity】RectTransform与Transform组件有什么区别

    RectTransform组件是Unity中用于控制UI元素位置、大小和旋转的组件。它是UI系统的一部分,用于在屏幕空间中布局和定位UI元素。 与transform组件相比,RectTransform组件具有以下区别: 1. 坐标系统:RectTransform组件使用屏幕空间坐标系统,而transform组件使用世界空间坐标系统。RectT

    2024年04月22日
    浏览(12)
  • 【Unity3D】Unity 组件 ① ( 组件 Component 概念 | Transform 组件和 Light 组件 | Mesh Filter 组件和 Mesh Renderer 组件 )

    【Unity3D】Unity 组件 ① ( 组件 Component 概念 | Transform 组件和 Light 组件 | Mesh Filter 组件和 Mesh Renderer 组件 )

    组件 Component 是 选中 游戏物体 GameObject 后 , 在 Inspector 检查器 窗口 中 , 查看到的内容 ; 组件 Component 代表了 游戏物体 GameObject 的一种功能 ; 空物体 只有 Transform 组件 , 只能提供 坐标 , 旋转角度 , 缩放倍数 功能 ; 平行光源 物体 有 Light 组件 提供光照功能 ; 立方体 物体 有 M

    2024年02月06日
    浏览(16)
  • 小波变换(wavelet transform)

    小波变换(wavelet transform)

     小波变换跟时间有关,横坐标是时间,纵坐标是频率。 真实世界的数据或者信号经常表现出缓慢变化的趋势或因瞬态而出现的震荡,另一方面,图像具有被边缘中断或者对比度突然变化的平滑区域,傅里叶变换不能有效代表突然的变化,这是因为傅里叶变换将数据表示为未

    2024年02月07日
    浏览(10)
  • 十八、Unity游戏引擎入门

    十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(50)
  • css-transform2D变换

    css-transform2D变换

    CSS transform 属性允许你旋转,缩放,倾斜或平移给定元素。 常用的 transform 属性有下面几个 属性 说明 translate(0, 0) 位移 rotate(0deg) 旋转 scale(1) 缩放 skew(0deg) 斜切 transform的说明文档 :https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform 下面分别说一下这几个方法 translate() 位移 translat

    2023年04月08日
    浏览(12)
  • 【C++】STL 算法 - transform 变换算法 ① ( transform 函数原型 | 将 一个 或 两个 输入容器 中的元素 变换后 存储到 输出容器 中 )

    std::transform 是 STL 标准模板库 中的一个算法 , 该算法的作用是 用于对 容器 或 指定迭代器范围 的 每个元素 进行 指定的 \\\" 转换操作 \\\" , 并将 \\\" 转换结果 \\\" 存储到另一个容器中 ; std::transform 算法 接受 一个 或 两个输入范围 , 以及一个输出范围 , 并 根据提供的 一元函数对象 或

    2024年01月16日
    浏览(19)
  • Python 傅里叶变换 Fourier Transform

    Python 傅里叶变换 Fourier Transform

    flyfish 一图胜千言 Fast Fourier Transform (FFT) 快速傅里叶变换 快速傅里叶逆变换 p e r i o d = 1 f r e q u e n c y period = frac{1}{frequency} p er i o d = f re q u e n cy 1 ​ 因为1、3、7相对2000,在坐标轴上太小把上述代码freq_feature 改成100,300,700更容易看出特点 继续绘制freq_feature =1、3、7的傅里叶变

    2024年02月20日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包