模型空间→世界空间→相机空间→屏幕空间
世界空间顶点=模型空间顶点*世界矩阵
相机空间顶点=模型空间顶点*世界矩阵*相机矩阵
模型空间→世界空间→相机空间→屏幕空间
世界空间顶点=模型空间顶点*世界矩阵
相机空间顶点=模型空间顶点*世界矩阵*相机矩阵
uniform vec2 _shear;
uniform vec2 _res;
out vec4 fragColor;
void main()
{
vec2 uv = gl_FragCoord.xy/_res;//将坐标系改为0~1
mat2 shaer = mat2(1,_shear.x,
_shear.y,1); //二维切变矩阵 此时_shear.x=-0.2 _shear.y=0
uv *= shaer; //坐标与矩阵相乘
vec4 outcol = texture(sTD2DInputs[0], uv);
vec4 color = outcol;
fragColor = TDOutputSwizzle(color);
}
正常
XY:
2D缩放矩阵[kx,0
0,ky]
3D缩放矩阵[kx,0,0
0,ky,0
0,0,kz]
和差公式
sin(a+b) = sin(a)*cos(b)+cos(a)*sin(b)
sin(a-b) = sin(a)*cos(b)-cos(a)*sin(b)
cos(a+b) = cos(a)*cos(b)-sin(a)*sin(b)
cos(a-b) = cos(a)*cos(b)+sin(a)*sin(b)
旋转矩阵
点P.X=角度*cos*P的模长
点P.Y=角度*sin*P的模长
P角度=a
P1和P的夹角=b
即
P.X=r*cos(a)
P.Y=r*sin(a)
r=1
则P1的X点 = r*Cos(a+b)
根据和差公式得 = r*Cos(a)*Cos(b)-r*Sin(a)*Sin(b)
化简后得 = P.X*Cos(b)-P.Y*Sin(b)
P1的Y点 = r*Sin(a+b)
根据和差公式得 = r*Sin(a)*Cos(b)+r*Cos(a)*Sin(b)
化简后得 = P.Y*Cos(b)+P.X*Sin(b)
整理得
P1.X = P.X*Cos(b)-P.Y*Sin(b)
P1.Y = P.X*Sin(b)+P.Y*Cos(b)
矩阵写法
[x1,y1]=[cos(b),-sin(b),sin(b),cos(b)]*[x,y]
RotX = [cos(a),sin(a),0
-sin(a),cos(a),0
0, 0, 1]
RotY = [cos(a),0,-sin(a)
0,1,0
sin(a), 0, cos(a)]
RotZ = [1,0,0
0,cos(a),sin(a)
0,-sin(a),cos(a)]
protected override void mapBindings(){}
新建一个脚本名为Demo1ContextView,用于启动contextView,该脚本继承ContextView,继承后使用系统补全命名空间,并且将该脚本挂载到场景的空游戏物体上
新建另一个脚本Demo1Context作为contextView,该脚本继承自MVCSContext,同上
在Demo1ContextView中的awake方法里创建
this.context=new Demo1Context(this);//该方法需要传入一个monobhvs,而ContextView则继承自monobhvs,所以直接用this
该方法创建时会自动启动MVCS框架
在Demo1Context中实例化框架,这是其中一种实例化方法
public Demo1Context(MonoBehaviour view):base(view){}
实例化框架后需要进行绑定,覆写父类的绑定方法
protected override void mapBindings(){}
被一个棋子攻击也是-delta*2,被两个棋子攻击,也是delta*2?
GetRelatedPos之前应该需要清空数组吧
foreach(Transform trans in transfrom)
trans是遍历transfrom所有的子物体,不包括自身
int i=5;
这里为什么不用aChessStep的x、y
JudgeIfCheckmate,这样判断的话,有可能再GetKingPosition时,jiangX,jiangY并没有变化
数组是不是还没有初始化?
AddChess的第一个参数,感觉没必要传递,悔棋类自己维护就好了
空格也包括再不是中吧
可以不管这么多,直接遍历横竖的所有格子,判断一下行走是否合法。
这样代码会简单一些
这里又用了gameManager.chessBoard
这样会不会出现不能走的棋,却显示出可以走的位置。
比如两个将之间只有一个棋子的时候,本来这个棋子是不可以走动的
关于DataUtility类中的各种getUV方法的作用解释(与图集有关):
https://blog.csdn.net/weixin_30826761/article/details/98998277