Unity 中 Transform 组件的基本用法

目录

Unity 中 Transform 组件的基本用法

一、Transform 组件的基本概念

(一)与游戏物体父子关系的关联

二、在脚本中获取和控制 Transform 组件

(一)获取组件

(二)位置相关

(三)旋转相关

(四)缩放相关

(五)物体方向向量相关

(六)常用方法

(七)父子关系控制相关


在 Unity 开发中,Transform 组件是每个游戏物体都必备的重要组件。以下将详细介绍其相关知识及代码示例。

一、Transform 组件的基本概念

(一)与游戏物体父子关系的关联

游戏物体之间可以存在父子关系,而真正维持这种父子关系的是 Transform 组件,并非 GameObject 类本身。当有父子关系形成后,控制父物体时,子物体也会受到影响。

二、在脚本中获取和控制 Transform 组件

(一)获取组件

在脚本中获取 Transform 组件很简单,直接使用transform就可以拿到对应的组件。

(二)位置相关

  1. 获取位置的方法
    • positionlocalPosition两种获取位置的方法。
    • position代表物体在世界当中的位置。
    • localPosition代表物体相对于父体的位置,是一个相对位置。

using UnityEngine;

public class TransformTest : MonoBehaviour
{
    void Start()
    {
        Debug.Log(transform.position);
        Debug.Log(transform.localPosition);
    }
}

(三)旋转相关

  1. 表示方式
    • rotation是一个四元数,positionlocalPositionVector3类型。除了rotation,还有localRotation
    • 旋转有四元素和欧拉角两种表示方式,并且都有相对于世界和相对于本地的情况。
    • 获取欧拉角度后就是一个Vector3,代表xyz三个轴向的旋转。

using UnityEngine;

public class TransformTest : MonoBehaviour
{
    void Start()
    {
        Debug.Log(transform.rotation);
        Debug.Log(transform.localRotation);
        Vector3 eulerAngles = transform.eulerAngles;
        Debug.Log(eulerAngles);
    }
}

(四)缩放相关

缩放只有相对于父体的缩放,通过transform获取相关信息。

(五)物体方向向量相关

  1. 获取向量
    • 物体的前方可以通过transform.forward获取,右方通过transform.right获取,上方通过transform.up获取,这相当于获取了三个轴对应的向量。

using UnityEngine;

public class TransformTest : MonoBehaviour
{
    void Start()
    {
        Debug.Log(transform.forward);
        Debug.Log(transform.right);
        Debug.Log(transform.up);
    }
}

(六)常用方法

  1. 物体看向某点
    • 使用transform.LookAt方法可以让物体看向指定点,例如让物体看向原点:transform.LookAt(Vector3.zero)
  2. 物体旋转
    • 绕轴旋转可以使用transform.Rotate方法,比如绕up轴每一帧旋转 1 度:transform.Rotate(Vector3.up * Time.deltaTime)
    • 绕某个物体旋转使用transform.RotateAround方法,传绕的点、轴和速度等参数,例如绕原点的up轴每一帧旋转 5 度:transform.RotateAround(Vector3.zero, Vector3.up, 5 * Time.deltaTime)
  3. 物体移动
    • 使用transform.Translate方法进行移动,例如向前方移动:transform.Translate(Vector3.forward * 0.1f)

(七)父子关系控制相关

  1. 获取父物体和子物体信息
    • 获取当前物体的父物体可以使用transform.parent获取父物体的Transform组件,使用transform.parent.gameObject获取父物体的GameObject
    • 获取子物体个数使用transform.childCount
  2. 解除父子关系与获取子物体
    • 解除与子物体的父子关系使用transform.DetachChildren
    • 获取子物体可以通过transform.Find根据子物体名称查找,或者通过transform.GetChild根据索引获取。还可以通过transform.IsChildOf判断一个物体是否是另一个物体的子物体。
    • 设置父物体可以使用transform.SetParent方法,例如transform.SetParent(otherTransform)可以将当前物体的父物体设置为otherTransform对应的物体。

Transform 组件在 Unity 开发中对于控制物体的位置、旋转、缩放以及父子关系起着至关重要的作用,熟练掌握其用法是进行游戏开发的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值