真Unity3d_坐标和矢量入门_UI_3d转2d参考

Posted avi9111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了真Unity3d_坐标和矢量入门_UI_3d转2d参考相关的知识,希望对你有一定的参考价值。

目录

* 这里并没有什么基础教学,都是实战记录

4 * 3 等于多少?

这个4是怎么得来的,3+1??


* 这里并没有什么基础教学,都是实战记录

x,y轴形成了二维矢量

x,y,z抽组成三维矢量

。。。。 有点废话

那么问题来了,

4 * 3 等于多少?

//Quaternion * Vector3
Quaternion.AngleAxis(Random.Range(1, 5), Vector3.forward) * Vector3.up

Quaternion.Euler()的意义是
Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis.
也就是说绕x轴旋转x度,y轴旋转y度,z轴旋转z度

Quaternion作用于Vector3的右乘操作(*)返回一个将向量做旋转操作后的向量,也就是说是将一个向量(欧拉角)旋转到指定的角度
 

这个4是怎么得来的,3+1??

Quaternion.AngleAxis(Random.Range(1, 5), Vector3.forward) 

已知开始位置和方向,如何计算最终位置

var endPos = startPos + dir * Random.Range(0.5, 1);

 

//上面endPos,startPos,dir,3个参数都是Vector3

对于初学者来说,Vector3既是表示点的距离,也可表示方向,容易搞混

但对于哥来说,就算做了多年,其实也很容易搞混

就是你学了骑单车多年,多年之后还不是只会简单的两脚往前骑,下雨一样会扑街

所以,就是掌握了就好,不用太在意

 

Unity就提供了很好的放大,打印显示都是Vector3的 pos  + dir

    {
            _tempDir = Quaternion.AngleAxis(Random.Range(0.5, 1), Vector3.forward)
                .eulerAngles;
            tempPos = start;
    }
    private void OnDrawGizmos()
    {
        Debug.DrawRay(tempPos,_tempDir);
    }

(红线为 UI 平面)

那么,3*3又如何

说了那么多矢量点积,叉乘,居然是没有3*3的

 

当然, 你可以这么写

(错的不要学)

static public Vector3 Mul(this Vector3 lhs, Vector3 rhs)
{
    return new Vector3(lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z);
}

好吧,上面开个玩笑,是这么写的

(直接调用 Cross即可,不需要像下面这样额外写,只是和上面做个对比)

static public Vector3 Cross(this Vector3 lhs,Vector3 rhs)
{
    return Vector3.Cross(lhs,rhs);
}

 

以上是关于真Unity3d_坐标和矢量入门_UI_3d转2d参考的主要内容,如果未能解决你的问题,请参考以下文章

cocos2d转unity3d小结

真Unity3d_分享一个攻击连招的简单实现

Unity_2D游戏实例从零讲起——基本菜单UI的实现

Unity3D_(API)射线检测

真Unity3d_亲自做了一次之后,终于发现了为什么那么多烂游戏,那么多新手引导

Unity3D Shader水波效果