SRC 向量

本文介绍如何在Unity中利用transform.forward获取当前对象的方向,并基于该方向计算出一个矩形的四个顶点位置。通过创建垂直于当前方向的左右向量,结合长度和宽度参数,实现了矩形位置的动态计算。

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 leftHeadPos = add(dot(forward, length),leftBottomPos.x,leftBottomPos.y,leftBottomPos.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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值