初识向量的点乘,叉乘,函数的弧度转角度,以及弦值转弧度!

使用向量的点乘与叉乘可以确定目标位置处于自己所在的方向,就像游戏开发中,怪物看向玩家一样。

        var dir = trget_Pos - transform.position;//通过目标位置与自己的位置计算出向量
        


        float angleSin = Vector3.Cross(dir, transform.forward).magnitude /( dir.magnitude * transform.forward.magnitude);//通过叉乘的算法计算出与自身的前方就是forward轴之间夹角的正弦值。


        float angle = Mathf.Rad2Deg * Mathf.Asin(angleSin);//通过vs提供的方法,现将弦值转换成弧度,在转化成角度,就知道了需要旋转多少度才能让自己看向目标
   
            transform.Rotate(Vector3.up,-angle);

这样旋转自己目标就能让自己看向目标

如果需要判断转向的方向是左还是右

    if (Vector3.Cross(dir, transform.forward).y > 0)//通过叉乘结果的y值与左手定则来确定物体的转向方向,这样的话下面的转向角度就需要重新处理
        {
            Debug.Log("左转");
            transform.Rotate(Vector3.up,-angle);//角度处理还得再想想
        }
        else
        {
            Debug.Log("右转");
            transform.Rotate(Vector3.up, angle);
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值