《手把手教你架构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架构设计
第14章 游戏开发经验分享
14.3 减小包体大小:
1.将带Alpha通道的贴图存成png,不带的存成jpg.