| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity3D ---Transform学习总结 -> 正文阅读 |
|
[游戏开发]Unity3D ---Transform学习总结 |
unity3d版本-version2017
Transform组件特点 1)控制游戏对象的变换、包含父子关系的内容 2)关于坐标 世界坐标(以场景的原点为原点);本地坐标(相对于父物体的坐标) 以父物体的位置为原点 3)关于旋转 世界旋转/本地旋转(相对于父物体的旋转) (1)坐标系内容 ?在Unity3D中,分为世界坐标系、屏幕坐标系、视口坐标系 了解左手坐标系的概念 没有父物体时,localPosition与position等价 localPosition 和 position 的区别就在于:前者是相对父物体的相对世界坐标;后者是在初始化空间里的绝对世界坐标;当然,如果一个物体没有父物体,则二者等效。 InverseTransformVector 和 TransformPoint上述二者,实现 #1 : 求A物体下相对坐标为(10, 10, 10)的物体,其绝对世界坐标是多少?? A.tranform.TransformPoint(new Vector3(10, 10, 10)); A.tranform.InverseTransformVector(new Vector3(20, -20, 20)); 子物体显示的是相对于父物体的变换 子物体世界坐标=子物体本地坐标+父物体的世界坐标 子物体世界旋转=子物体本地旋转+父物体的世界旋转 子物体世界缩放=子物体本地缩放+父物体的世界缩放 基础知识总结 normalized 当前向量的标准化向量(归一化) Normalize() magnitude 向量的模,长度 sqrMagnitude 模的平方 比较两个向量的长度 static forword 世界的前方 (0,0,1) static right 世界的右方(1,0,0) static up 世界的上方(0,1,0) static zero 0,0,0 static one1,1,1 static float Distance(Vector3,Vector3)求两个点的距离 static float Angle(Vector3,Vector3)求两个向量的夹角 static Vector3 Cross(Vector3a,Vector3b)求两个向量的叉乘 (2)旋转的概念 ?欧拉角EularAngle 物体绕x,y,z轴(世界的)旋转角度 优点:好理解,好操作 角色方向控制:transform.eulerAngles += Vector3.up * hor * turnSpeed; 缺点:容易出现多个欧拉角的值表示一个旋转 四元数 由四个值组成x,y,z,w;优点:可以避免欧拉角及万向锁存在的问题 Rotation是一个四元数,而其数值的正负值往往代表的是旋转方向,而其数值大小0到1则对应0到180度的对应Rotation Rotate:
具体使用方法的几种案例: ?1)相对于世界坐标 void Update () { 2)相对于局部坐标,也就是自身坐标 ?transform.Rotate(Vector3.forward, Space.Self); 3)基本用法 ?? ?void Update () { ? ? ? ? Vector3 v3 = new Vector3(10, 10, 10); 绕着Vector3(10,10,10)这个轴进行转动 eulerAngles: Transform.eulerAngles表示世界空间中的旋转。在检查器中查看GameObject的旋转时,可能会看到与此属性中存储的角度值不同的角度值。这是因为Inspector显示本地旋转,可以使用Transform.localEulerAngles来查看本地的角度显示。 键盘控制物体转动的代码为: ?控制物体方向的常见代码为: using System.Collections; public class earthMove : MonoBehaviour { ?? ?// Use this for initialization } 欧拉角与四元数的转换 //将欧拉角转换为四元数 ?Quaternion qua=Quaternion.Euler(new Vector3(x,y,z)); Quaternion结构体的3个方法:? Static identity 空旋转 Static LookRotation 将一个向量转换为这个方向所代表的四元数 Static Lerp 插值,有过渡动画 关于Transform.eulerAngles 最需要注意的一点是欧拉角的读取数值是介于0到360度的,所以无论读写,可能数值与Transform面板数值不同,同时,最重要的一点,由于这种特性,对其数值的累加可能出错 Quaternion:
Quaternion.RotateTowards():插值旋转至与目标角度相同 ? ? ? ? //与target保持一样的角度 Transform.RotateAround 围绕旋转 gameObject.transform.RotateAround(new Vector3(x,y,z),new Vector3(x,y,z),Speed) 其中,第一个vector3表示围绕中心点坐标,第二个vector3表示所围绕旋转的轴,Speed表示旋转速度。 范例用途:比如太阳系行星旋转 了解向量的内容后,为主摄像机添加脚本 范例: 照相机跟随 using System.Collections; public class CameraMove : MonoBehaviour { ?? ?// Use this for initialization //awake()一般用来寻找对象,如Tag
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 2:43:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |