zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    react学习笔记4
    php学习笔记
    react学习笔记2
    react学习笔记
    获取一个数组中的随机值
    添加数据库补丁
    $.post $.getScript
    SQLServer2008将表数据导出的方法
    DataTable筛选符合条件的DataRow
    c# 下拉多选的实现
  • 原文地址:https://www.cnblogs.com/hont/p/4467839.html
Copyright © 2011-2022 走看看