transform.forward 为z轴向量,初始为单位向量(0,0,1) 根据旋转角度得到相应的单位向量
Vector3 forward = transform.forward
Vector3 right = new Vector3(forward.z, forward.y, -forward.x); // 垂直于当前向量的右向量
Vector3 left = new Vector3(vector3.x * -1,vector3.y * -1,vector3.z * -1);// 垂直于当前向量的左向量
Vector3 leftDotWidth = dot(left, (width/2)); // 相对于当前点为起始点的固定长度的向量
Vector3 leftBottomPos = add(leftDotWidth,v.x,v.y,v.z);// 相对于世界坐标为起始点的向量
Vector3 rightDotWidth = dot(right, (width/2));;// 相对于当前点为起始点的固定长度的向量Vector3 rightBottomPos = add(rightDotWidth,v.x,v.y,v.z);//相对于世界坐标为起始点的向量
Vector3 rightHeadPos = add(dot(forward, length),rightBottomPos.x,rightBottomPos.y,rightBottomPos.z);//矩形右上点向量
private Vector3 dot(Vector3 vector3,float value) {
return new Vector3(vector3.x * value,vector3.y * value,vector3.z * value);
}
private Vector3 add(Vector3 vector3,float x,float y,float z) {
vector3.x = vector3.x + x;
vector3.y = vector3.y + y;
vector3.z = vector3.z + z;
return vector3;
}
本文介绍如何在Unity中利用transform.forward获取当前对象的方向,并基于该方向计算出一个矩形的四个顶点位置。通过创建垂直于当前方向的左右向量,结合长度和宽度参数,实现了矩形位置的动态计算。
3982

被折叠的 条评论
为什么被折叠?



