Unity实战技术详解

    xiaoxiao2022-07-02  122

    《手把手教你架构3D游戏引擎 姜雪伟著》此书讲解比较浅,而且浅的东西也不说清楚。都只是提到

    向量减法:

    意义是从一个点移动另一个点。

    public Transform start; public Transform end; void Update () { Vector3 dir = (end.position- start.position).normalized; start.transform.position = start.transform.position + dir * 0.5f; }

    点乘:

    目的是计算向量之间的角度。 

    描述: 一个向量在另一个向量的投影。点乘得到的是弧度值。如果想得到角度需要转。

    一个手电筒照射两个向量

    一个向量绕某一个轴旋转angle角度:

     angle= Vector2.Doc(V1, V2);

     Vector2 newVec = Quaternion.AngleAxis(angle, Vector3.back) 

    叉乘:

     a×b=|a||b|sinθ   

    Vector3.Cross(Vector3a,Vector3b)得到值类型是Vector3,也就是垂直于向量a和b的向量。

    表述一个向量在另一个向量的哪个方位。

    计算出的点乘结果>0,则和z轴同向,顺时针旋转,否则逆时针旋转。

    //计算方向盘中心点到触控点的向量 Vector3 currVec; //触控点的向量 Vector3 wheelPos; //后一次的操作点 Vector3 oldVec; //方向盘 public RectTransform wheelObj; private void Update() { RotateWheel(wheelObj.position); } void RotateWheel(Vector3 pos) { //计算触控点的位置 Vector3 vecWord = Vector3.zero; RectTransformUtility.ScreenPointToWorldPointInRectangle(wheelObj, Input.mousePosition, Camera.main, out vecWord); wheelPos = vecWord; //计算方向盘中心点到触控点的向量 currVec = pos - wheelPos; //计算前后两次操作时向量的 法向量 Vector3 normalVec = Vector3.Cross(currVec, oldVec); //计算两个向量的夹角 float vecAngle = Vector2.Angle(currVec, oldVec); //使用“右手定则”可知,当大拇指方向指向我们时,四指方向为逆时针方向 //当大拇指方向远离我们时,四指方向为顺时针方向 //这里叉乘后的法向量平行于z轴,所以用法向量的z分量的正负判断法向量方向 if (normalVec.z > 0)//和z轴同向,则顺时针转 { wheelObj.transform.Rotate(Vector3.forward, -vecAngle*50);//顺时针转 } else if (normalVec.z < 0)//和z轴反向,则逆时针转 { wheelObj.transform.Rotate(Vector3.forward, vecAngle* 50);//逆时针转 } oldVec = currVec;//赋值 }

    固定流水管线: 

    局部坐标是对象相对于局部原点的坐标,也是对象开始的坐标。将局部坐标转换为世界坐标,世界坐标是作为一个更大空间范围的坐标系。这些坐标是相对于世界原点的。接下来我们将世界坐标转换为观察坐标,观察坐标是指以摄像机或观察者的角度观察的坐标。在将坐标处理到观察坐标之后,我们需要将其投影到裁剪坐标上。裁剪坐标是在1.0到1.0范围内判断哪些顶点将会出现在屏幕上的。最后,我们需要将裁剪坐标转换为屏幕坐标,我们将这一过程称为视口变换(Viewport Transform)。视口变换将位于1.0到1.0范围内的坐标转换到由视口函数所定义的坐标范围内。转换的坐标将会送到光栅器中,由光栅器将其转化为片段。

    换装系统

    https://edu.51cto.com/course/2995.html  //51otc

    Avatar换装

    应用: 换装,换武器,换表情

    换装原理:

    方式一: 直接换mesh,但是如果是动态物体,则会出现换时动作停顿,或者方向错误。只适用于静态模型 

    2D物体只需要换材质就行

     

    第三章: 消息事件封装

    第四章:残影

    克隆出多个mesh,控制时间间隔,shader效果

    实时阴影: unity自带的占资源比较大,不适用于手游。另一种方法则是 是在角色头顶放一个摄像机,渲染RT图片

    第10章 MVC架构设计

    https://mp.weixin.qq.com/s?__biz=MzA5NjE0NzYwNA==&mid=2650890516&idx=1&sn=1119084f5c80fb36465179b632b56017#rd

    第14章 游戏开发经验分享

    14.3 减小包体大小:

    1.将带Alpha通道的贴图存成png,不带的存成jpg.

     

     

     

     

     

     

    最新回复(0)