笛卡尔坐标系:
1.笛卡尔直角坐标系
2.笛卡尔斜角坐标系
3.笛卡尔坐标系的度量单位一致
4.第一象限++,第二象限-+,第三象限+-,第四--
笛卡尔坐标系:
1.笛卡尔直角坐标系
2.笛卡尔斜角坐标系
3.笛卡尔坐标系的度量单位一致
4.第一象限++,第二象限-+,第三象限+-,第四--
使用Normalize()方法是直接改变了原有的向量的值,变为了归一化单位向量
调用normalized属性可以新设一个向量接收这个值,这样不用改变原有向量值
点积的结果是一个标量,也就是单独的数值
左手握拳大拇指向上,四根手指握拳的的方向为旋转的正方向
3D笛卡尔坐标系与OpenGL都是右手坐标系
Direct3D与Unity3D为左手坐标系
unity的世界坐标系是左手
private void Update()
{
//if (timer <= 1)
{
m_go1.transform.Translate(Vector3.right * 2 * Time.deltaTime);
Vector3 viewPos = Camera.main.WorldToViewportPoint(m_go1.transform.position);
if (viewPos.x >= 1f || viewPos.x < 0.0 || viewPos.y >= 1f || viewPos.y < 0.0)
{
m_go1.transform.position = oldPos;
return;
}
oldPos = m_go1.transform.position;
timer += Time.deltaTime;
}
}
点积第二种得到方法:向量a的模长乘以向量b的模长乘以cos那个啥
unity中有4个坐标系
全局、局部local、屏幕screen、视口坐标viewport
//Vector3 m_target = m_go2.transform.position;
//m_go1.transform.Translate((m_go2.transform.position - m_go1.transform.position).normalized * Time.deltaTime, Space.World);
//m_go1.transform.position = new Vector3(Mathf.Clamp(m_go1.transform.position.x, m_go1.transform.position.x, m_target.x), Mathf.Clamp(m_go1.transform.position.y, m_go1.transform.position.y, m_target.y), Mathf.Clamp(m_go1.transform.position.z, m_go1.transform.position.z, m_target.z));
transform.translate(x,space.world)
可以使物体的移动按照世界坐标系进行
默认为space.self也就是说局部坐标系
transform.InverseTransformPoint()可以转换世界坐标为局部坐标
transform.TransformPoint()转换局部坐标为世界坐标
transform.transformDirection()将一个方向从局部坐标系转成全局坐标,不考虑长度
transform.inverseTransformDirection()同理
transform.transfomVector()将一个向量从局部变成全局
transform.inverseTransformVector()同理
transform.forward当前物体的局部坐标系的z轴在世界坐标系上的指向
transform.right为x轴
transform.up为y轴
Camera.ScreenToWorldPoint()将屏幕坐标转化为世界坐标
Camera.WorldToScreenPoint()反之同理
input.mousePosition()获得鼠标在屏幕坐标系中的坐标
负向量:一个向量和他的负向量相加等于0
矩阵之间相乘是行*列,所以要求第一个矩阵的行数必须等于第二个矩阵的列数
注意矩阵相乘是点乘结果,结果是数值
不是,模为1的任何方向向量为单位向量。 v3.Normalize();
Vector3.Distance(v1,v2);
2*3*cos60;2*3*sin60;
Vector3.Cross(a,b)>0 , 逆时针
transform.Translate(translation:Vector3,relativeTo:Space=Space.Self);
relativeTo为空,则默认为局部坐标系。
最后加Space.World,则是世界坐标系
transform.Translate(transform.forward * Time.deltaTime, Space.Self);
首先transform.forward是当前物体的物体坐标系的z轴在世界坐标系上的指向,那么就是系统根据物体本身的局部坐标计算出的世界坐标!!!,但是如果你用了Space.Self,需要的是局部坐标,那么你的transform.forward就会再次被转换成局部坐标。所以就造成了,如果你物体旋转度是30,transform.forward就是30度的方向,然后,transform.forward在计算成局部坐标就会变成再+30度,所以看起来就是世界坐标的60度方向移动。