对比transform中的世界参数和自身参数

1、添加Test脚本,打开编辑:

 

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

public class Test : MonoBehaviour {

    private void 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.lossyScale);
        Debug.Log("自身缩放:" + transform.localScale);

        Debug.Log("自身转世界矩阵:" + transform.localToWorldMatrix);
        Debug.Log("世界转自身矩阵:" + transform.worldToLocalMatrix);
    }

}

2、创建Cube,点击小齿轮重置Transform

 

3、将Test脚本挂载到Cube身上

 

 

4、快捷键Ctrl+Shift+C打开Console窗口查看打印信息
5、运行查看打印信息

 

  • 此时Cube在世界空间下,世界坐标和自身坐标没有区别

6、新建空物体,重置Transform

 

7、Cube拖到空物体下,成为子物体

 

8、运行,查看打印

 

  • 当父物体重置Transform的情况下,世界坐标和自身坐标也没有区别

9、 改变父物体的Transform中的位置和旋转,运行打印

 

  • 世界坐标变化了,自身坐标没变

10、改变子物体Cube的Transform中的位置和旋转,运行打印

 

  • 世界坐标与自身坐标都变化了,其中自身坐标就是刚刚改变的子物体Cube刚刚修改的位置与旋转
  • 子物体Cube的自身坐标就是显示在检视面板的值,而子物体Cube的世界坐标的值=自身坐标的值+父物体坐标的值
  • 检视面板中的Rotation对应的是欧拉角旋转,而不是四元数旋转
  • 当Cube为子物体的时候,对应的检视面板中的Transform是自身坐标的值;当Cube不是子物体的时候,对应的检视面板中的Transform是世界坐标的值

11、改变父物体的缩放,运行打印

 

  • 世界坐标=自身坐标+父物体坐标*父物体缩放值

12、改变子物体的缩放,运行打印

 

  • 世界缩放=自身缩放*父物体缩放
  • 世界坐标不受子物体缩放印象;而是受父物体缩放影响



作者:Joe_Game
链接:https://www.jianshu.com/p/cb6eafab2201
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值