zoukankan      html  css  js  c++  java
  • 第23天坐标系和移动

    坐标系

    世界坐标系

    世界的右方为X的正方向,世界的上方为Y的正方向,世界的前方为Z的正方向,绝对坐标系,永远不变(原点不变,轴向不变)

    原点在世界的中心点

    物体坐标系

    可以改变,(原点可变,轴向可变)

    原点是模型本身的轴心点,当模型移动时,物体坐标系的原点就发生改变

    x轴正方向是模型的右方,y轴正方向是模型的上方,z轴正方向是模型的前方
    当模型在世界中发生旋转时,轴向就发生改变

    惯性坐标系

    可以改变,(原点可变,轴向不可变)

    原点是模型本身的轴心点

    x,y,z三个轴向与世界坐标系轴向平行

    Global和Local

    Global:此时物体显示的坐标系是惯性坐标系

    Local:此时物体显示的坐标系是物体坐标系

    Center和Pivot

    Center:当前选中游戏物体及其子物体组成的视觉中心点

    Pivot:当前选中游戏物体的轴心点,代码实现的自转是指绕着Pivot

    坐标

    世界坐标

    以世界坐标系为参考的坐标和旋转

    相对坐标

    以某一个物体坐标系为参考的坐标

    子物体界面显示的坐标为相对于父物体的坐标

    transform.position  物体的世界坐标

    transform.localPosition 物体相对于父物体的物体坐标系的坐标

    坐标旋转缩放

     获取子物体

    transfor.GetChild(索引):索引就是子物体在父物体中的顺序

    transform.childCount :获取到该物体下面的子物体个数,只提供一层

    transform.forward与Vector3.forward

    Vector3.forward

    只表示(0,0,1)这个值

    含义如下图,为用在哪就是什么含义

    transform.forward

    只表示已世界坐标系为参考,物体的正前方的值,一定表示的是方向

    只在以世界坐标系为参考才有意义

    移动方法

    transform.Translate

    transform.Translate(方向 * 速度, 方向的参考坐标系)

    transform.Translate(Vector3.forward * 速度, Space.World)

    transform.Translate(Vector3.forward * 速度, Space.Self)

    transform.Translate(transform.forward * 速度, Space.World)

    transform.Translate(transform.forward * 速度, Space.Self):移动方向不确定,无意义的

    第一个参数:物体移动的量

    第二个参数:移动量的参考坐标系

    只有一个参数的方法,默认是自身坐标系

    旋转方法

    transform.Rotate

    第一个参数:物体旋转的量

    第二个参数:移动量的参考坐标系

    绕着某一个点旋转(围绕)

    transform.RotateAround

    绕着某个点的某个轴进行旋转

    第一个参数:点 (坐标)

    第二个参数:轴

    第三个参数:旋转量

    父子关系

    设置父物体:transform.SetParent

    设置子物体在当前父物体的位置:transform.SetSiblingIndex

    当前物体的父物体:transform.parent  

    transform.LookAt(Transform target)

    使物体的Z轴朝向目标的中心点

    坐标转换

    InverseTransformPoint

    计算一个世界坐标位置在自己的物体坐标系中的坐标表示

    TransformPoint

    计算一个相对自身物体的坐标位置在世界坐标系中的坐标表示

    Vector3 pos= transform.InverseTransformPoint(cube.position);//得到的就是相对于目标点的坐标
    Debug.Log(pos);
    
    Vector3 pos= transform.TransformPoint(cube.localPosition);
    Debug.Log(pos);

    模型的坐标系不符合预期值

    解决方法:外面套一个空物体,方向设置正确

    法线的寻找

    如果是y乘以x 则手指从y向x轴收缩,大拇指方向就是法线

    旋转正方向判定

    拇指跟旋转的指向相同,四指收缩的方向为正方向

  • 相关阅读:
    前天晚上终于可以骑自行车了
    第一篇cnblog!
    使用web服务查询数据库的例子(上)
    使用网络提供的web服务开发航班查询程序
    使用web服务查询数据库的例子(下)
    .NET技术与企业级解决方案研究应用
    用正则表达式解析url
    基于原型的类继承
    Pub/Sub模式
    函数调用apply
  • 原文地址:https://www.cnblogs.com/yifengs/p/14146131.html
Copyright © 2011-2022 走看看