• Unity中差乘判断目标是否在左边或右边


    使用差乘判断左右一般是比较差乘的y,小于0是左,大于0是右。特殊情况可以用其他分量来比较

    默认情况:

    var cross = Vector3.Cross(lhsObject.transform.position, rhsObject.transform.position);
    if (cross.y > 0) //side
    if(cross.y < 0)//another side

    用forward方向,从而对有旋转的对象进行比较:

    void OnCollisionEnter(Collision other) {
         Vector3 direction = other.contacts[0].point - transform.position;
         var cross = Vector3.Cross(transform.forward, direction);
         if (cross.y < 0) print ("Left");
             else print("right");
     }

    用Transform的right就可以比较是否在前后,很常用,对于赛车游戏的路点等都会用到

    y>0 a在b后,y<0 a在b前

    var dir = a.position - b.position;
    var cross = Vector3.Cross(b.right, dir.normalized).y > 0;
    if (cross) return;

    论坛上还看见一个demo,加深理解(得到forward,up方向,取得right,left):

    // original vector:
      var forward: Vector3 = Vector3(0.5, 0.7, 0.8);
      // up direction:
      var up: Vector3 = Vector3(0.0, 1.0, 0.0);
      // find right vector:
      var right = Vector3.Cross(forward.normalized, up.normalized);
      var left = -right;
  • 相关阅读:
    IDEA开发 Scala 项目
    mvn编译时绕过本地jar去maven仓库下载问题
    三角化(转载)
    分布式文件服务器介绍(转载)
    VSCode 设置侧边栏字体大小
    libLas编译
    OSG编译
    vcpkg.exe安装与应用
    OpenCASCADE编译
    gl2ps编译
  • 原文地址:https://www.cnblogs.com/hont/p/4467839.html
Copyright © 2020-2023  润新知