zoukankan      html  css  js  c++  java
  • 判断周围是否有敌人的三种模式

    只攻击正前方的单位,向前发射一条射线,攻击碰到的单位

    RaycastHit hit;
    //range 射线的长度,即攻击范围,maskTarget敌方单位的mask,只攻击敌方单位
    if(Physics.Raycast(unit.thisT.position, unit.thisT.forward, out hit, range, maskTarget)){
          Unit targetTemp=hit.collider.gameObject.GetComponent();
          if(targetTemp!=null && targetTemp.HPAttribute.HP>0){
               target=targetTemp;
               if(attackMode==_AttackMode.StopNAttack){
                   if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();
                       unit.StopMoving();
                   }
          }
    }

    以己方单位为圆心的某一半径长度内

    //返回相交球的所有碰撞体
    Collider[] cols=Physics.OverlapSphere(unit.thisT.position, range, maskTarget);
    //if(cols!=null && cols.Length>0) Debug.Log(cols[0]);
    if(cols.Length>0){
           Collider currentCollider=cols[Random.Range(0, cols.Length)];
           Unit targetTemp=currentCollider.gameObject.GetComponent();
           if(targetTemp!=null && targetTemp.HPAttribute.HP>0){
                 target=targetTemp;
                 if(attackMode==_AttackMode.StopNAttack){
                    if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();
                       unit.StopMoving();
                 }
           }
    }

    以己方单位为圆心的扇形范围内

    Collider[] cols=Physics.OverlapSphere(unit.thisT.position, range, maskTarget);
    //if(cols!=null && cols.Length>0) Debug.Log(cols[0]);
    if(cols.Length>0){
          Collider currentCollider=cols[0];
          foreach(Collider col in cols){
              Quaternion targetRot=Quaternion.LookRotation(col.transform.position-unit.thisT.position);
              if(Quaternion.Angle(targetRot, unit.thisT.rotation)
                 Unit targetTemp=currentCollider.gameObject.GetComponent();
                 if(targetTemp!=null && targetTemp.HPAttribute.HP>0){
                      target=targetTemp;
                      if(attackMode==_AttackMode.StopNAttack){
                           if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();
                            unit.StopMoving();
                      }
                      break;
                  }
              }
         }
    }
  • 相关阅读:
    OLT配置学习
    notepad配合正则表达式处理文本
    利用expect和sshpass完美非交互性执行远端命令
    yum 数据库报错与重构
    杀死dialog
    OLT配置说明
    freeradius下发限速信息字段
    debug调试日志和数据查询
    通过windows的超级终端连接华为交换机
    强制清除交换机端口所有配置
  • 原文地址:https://www.cnblogs.com/softimagewht/p/3917545.html
Copyright © 2011-2022 走看看