unity-Transform.TransformDirection的使用

在理解TransformDirection之前我们首先要知道两个东西,分别是自身坐标系和世界坐标系

自身坐标系和世界坐标系

场景中的物体有两个坐标系,一个是自身坐标系,也叫本地坐标系,另外一个是世界坐标系

比如说我们在场景中创建一个cube,把它的参数reset。在Scene窗口那里

 红色框框那里就可以修改物体所在的坐标系

 Global就是世界坐标系,Local就是自身坐标系,我们当前选择的是自身坐标系,我们切换世界坐标系看看,发现cube的坐标轴没有任何变化。但是我们回到自身坐标系,我们将cube的x轴的旋转值设置成90,然后再切换世界坐标系就会发现,两个坐标系的坐标轴不一样。

这是因为世界坐标系不会变,x轴指哪就一直指哪,但是自身坐标系不一样,自身坐标系会随着自身的旋转而改变坐标系。

在了解这两个坐标系之后,我们就可以通过这两个坐标系来讲解一下TransformDirection的使用

Transform.TransformDirection

作用:将相对 “当前游戏对象” 的坐标转化为基于世界坐标系的坐标(当自身坐标系转化到世界坐标系)

演示

默认是在自身坐标系。场景中添加一个cube,将它的x轴的Rotation设置成90,然后我们回到世界坐标系发现两个坐标系的z轴不一样,我们通过这两个坐标系来演示一下TransformDirection的作用

 创建一个C#脚本,将这个脚本拖给Main Camera,然后我们通过这个脚本演示一个它的作用

首先,代码是这样的

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

public class NewBehaviourScript : MonoBehaviour
{
    public GameObject cube;
    private void Update()
    {
        cube.transform.Translate(Vector3.forward);  
    }
}

这个vector.forward表示自身坐标系下的z轴方向,所以这个代码的意思就是让cube沿着自身坐标系下的z轴方向移动

然后改变一下上面的代码

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

public class NewBehaviourScript : MonoBehaviour
{
    public GameObject cube;
    private void Update()
    {
        cube.transform.Translate(cube.transform.TransformDirection(Vector3.forward));  
    }
}

 这个经过TransformDirection之后就变成了世界坐标系的z轴了,这个代码的意思就是让cube沿着世界坐标系的z轴移动

因为开始两个坐标系的坐标轴就不一样,自然这两次cube的移动方向也不一样,由此就可以看出TransformDirection的作用就是将自身坐标系转到世界坐标系,比如自身坐标系的z轴,经过转化之后就变成了世界坐标系的z轴。

如有错漏之处,敬请指正!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真的没事鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值