Unity的学习笔记(向量点乘和叉乘)

public class AngleTest : MonoBehaviour {

    public GameObject cube;              //主要的物体
    public GameObject radCube;           //判断此物体与主要物体位置

    Vector3 radCubeToCube;               //红色方块到这个方块的向量

    Vector3 crossOfcube;                 //存放叉乘的结果

    float angleCross;                    //存放叉乘角度
    float angleDot;                      //存放点乘角度

    

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        radCubeToCube = radCube.transform.position - cube.transform.position;    

        crossOfcube = Vector3.Cross(cube.transform.forward.normalized, radCubeToCube.normalized); //一定要转换成单位向量

        angleCross = Mathf.Asin(Vector3.Distance(Vector3.zero,crossOfcube)) * Mathf.Rad2Deg;   //网上查的,用来算叉乘角度
        Debug.Log("点乘夹角" + angleCross);
        Debug.Log("左右判断" + crossOfcube.y);
        Debug.Log("上下判断" + crossOfcube.x);

        angleDot = Mathf.Acos(Vector3.Dot(radCubeToCube.normalized, cube.transform.forward.normalized)) * Mathf.Rad2Deg;
        //这个分开看,Vector3.Dot()是为了计算两个向量得到的cos值,Mathf.Acos是反三角函数,转换为弧度,Mathf.Rad2De是把弧度换成角度

        Debug.Log("V3.Dot=" + angleDot);
    }
}

我个人觉得angleCross这个数据应该用不上, 我测试了一下,角度都是90度以内,也没法得到位置信息,所以我没有研究得到这个数据的代码。

crossOfcube.y 得到这个这个值就很有用,不管数据是多少,但是有正负,正方向就是方块的左边,负方向就是方块的右边。

crossOfcube.x 这个也有用,也是通过正负判断方位,如果是正,则在下方,负数则在上方。

angleDot 得到的这个角度也挺有用的,能够判断方位,可以结合crossOfcube得到的判断在自己的左右多少度方位。

 

转载于:https://www.cnblogs.com/takanashi/p/10810137.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值