美文网首页unity3D技术分享
Unity 游戏框架搭建 2019 (十七) Transform

Unity 游戏框架搭建 2019 (十七) Transform

作者: 凉鞋的笔记 | 来源:发表于2020-04-02 09:49 被阅读0次

今天我们再往下接着探索,我们的 Transform。

我们经常要写这样的逻辑,对一个 Transform 的位置、旋转、缩放值进行重置。

代码如下:

transform.localPosition = Vector3.zero;
transform.localScale = Vector3.one;
transform.localRotation = Quaternion.identity;

代码大家应该经常会写到。

我们提取后的方法如下:

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;

namespace QFramework
{
    public class TransformIdentity : MonoBehaviour
    {
        
#if UNITY_EDITOR
        [MenuItem("QFramework/11.Transform 归一化")]
#endif
        private static void MenuClicked()
        {
            var transform = new GameObject("transform").transform;

            Identity(transform);
        }

        /// <summary>
        /// 重置操作
        /// </summary>
        /// <param name="trans">Trans.</param>
        public static void Identity(Transform transform)
        {
            transform.localPosition = Vector3.zero;
            transform.localScale = Vector3.one;
            transform.localRotation = Quaternion.identity;
        }
    }
}

代码的执行结果是正确的。

那么有人会问 Identity 是什么意思呢?Identity 其实是一个矩阵的类型,对角线全部是 1 而其他的部分全部是 0,如下图所示。


006tNc79gy1fzdi20inapj302b03lgle.jpg

实际上 Transform 本质是一个 4x4 的矩阵,这个矩阵可以记录矩阵的位置、旋转和缩放值。而 Identity 矩阵对应的 Transform 就是位置为 0、缩放为 1、Rotation 值为 Quaternion.identity 这样的矩阵。

这里不太理解的同学不要紧,重点还是以上代码中的 Identity 方法的实现。

OK,到这里,我们又可以进行一次导出了。

到今天为止,我们收集了十一个示例了。收获满满,大家应该收集了更多的示例了吧?

今天的内容就这些。

转载请注明地址:凉鞋的笔记:liangxiegame.com

更多内容

相关文章

网友评论

    本文标题:Unity 游戏框架搭建 2019 (十七) Transform

    本文链接:https://www.haomeiwen.com/subject/sdmtphtx.html