Vector2?SearchShotPoint()
 {
     foreach (var i in G20_HitObjectCabinet.GetInstance().AssitObjectList)
     {
         if (!i.GetComponent <Collider>().enabled)
         {
             continue;
         }
         if (IsEnemy(i.gameObject))
         {
             if (CanShootEnemy(i.gameObject))
             {
                 var pos = Camera.main.WorldToScreenPoint(i.transform.position);
                 if (InScreenRange(pos))
                 {
                     return(pos);
                 }
             }
         }
         else if (G20_EnemyCabinet.GetInstance().enemyCount < param[paramNumber].priorityEnemyCount)
         {
             var pos = Camera.main.WorldToScreenPoint(i.transform.position);
             if (InScreenRange(pos))
             {
                 return(pos);
             }
         }
     }
     return(null);
 }
예제 #2
0
 private void OnDestroy()
 {
     if (!G20_ComponentUtility.CheckRoot())
     {
         return;
     }
     G20_HitObjectCabinet.GetInstance().Remove(this);
 }
예제 #3
0
 public Vector2?GetEnemyHeadPoint()
 {
     foreach (var i in G20_HitObjectCabinet.GetInstance().AssitObjectList)
     {
         if (i.GetComponent <Collider>().enabled&& i.transform.position.y >= 0)
         {
             return(Camera.main.WorldToScreenPoint(i.transform.position));
         }
     }
     return(null);
 }
    public static Vector2 AssistAIM(Vector2 shot_point, float assist_value)
    {
        float   shortestDistance = 3000000f;
        Vector2 nearestDiff      = Vector2.zero;

        foreach (var e in G20_HitObjectCabinet.GetInstance().AssitObjectList)
        {
            ChangeNearest(ref nearestDiff, ref shortestDistance, shot_point, e.transform.position);
        }
        //AIM補正のポイントがターゲットを通り過ぎないようにする
        if (assist_value > shortestDistance)
        {
            assist_value = shortestDistance;
        }
        return(shot_point + (nearestDiff.normalized * assist_value));
    }
예제 #5
0
 public void ChangeHitTag(G20_HitTag hit_tag)
 {
     hitTag = hit_tag;
     G20_HitObjectCabinet.GetInstance().UpdateTagList(this);
 }
예제 #6
0
 private void Awake()
 {
     hitActions = GetComponents <G20_HitAction>();
     Array.Sort(hitActions, (x, y) => x.ExcutionPrioriy - y.ExcutionPrioriy);
     G20_HitObjectCabinet.GetInstance().Add(this);
 }