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); }
private void OnDestroy() { if (!G20_ComponentUtility.CheckRoot()) { return; } G20_HitObjectCabinet.GetInstance().Remove(this); }
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)); }
public void ChangeHitTag(G20_HitTag hit_tag) { hitTag = hit_tag; G20_HitObjectCabinet.GetInstance().UpdateTagList(this); }
private void Awake() { hitActions = GetComponents <G20_HitAction>(); Array.Sort(hitActions, (x, y) => x.ExcutionPrioriy - y.ExcutionPrioriy); G20_HitObjectCabinet.GetInstance().Add(this); }