void Start() { This_Transform = transform; MainBody_Script = GetComponentInParent <MainBody_Setting_CS> (); switch (Type) { case 0: // Static. Initial_Settings(); Parent_Flag = false; break; case 1: // Anchor. Initial_Settings(); Find_Anchor(); Parent_Flag = false; break; case 2: // Dynamic. Initial_Settings(); Parent_Flag = false; break; case 9: // Parent. Parent_Settings(); Parent_Flag = true; break; } }
void Follow_Target_Settings() { // Find the "MainBody" of Follow_Target. MainBody_Setting_CS MainBody_Script = Follow_Target.GetComponentInChildren <MainBody_Setting_CS> (); if (MainBody_Script) { Follow_MainBody = MainBody_Script.transform; } }
void Complete_Turret() { // Called from 'Turret_Finishing" when the sorting is finished. This_Transform = transform; Turret_Horizontal_Script = GetComponentInParent <Turret_Horizontal_CS>(); MainBody_Setting_CS Temp_Script = GetComponentInParent <MainBody_Setting_CS>(); if (Temp_Script) { MainBody_Rigidbody = Temp_Script.GetComponent <Rigidbody>(); } }
void Store_Components(Transform Temp_Transform) // Store MainBody's transform and sctipt ,and AI scripts. { MainBody_Setting_CS Temp_MainBodyScript = Temp_Transform.GetComponentInChildren <MainBody_Setting_CS> (); if (Temp_MainBodyScript) { if (Temp_Transform.root.tag == "Player") // Friendly tank. { for (int i = 0; i < Friendly_Body_Transforms.Length; i++) // Search empty. { if (Friendly_Body_Transforms [i] == null) { // Store components. Friendly_Body_Transforms [i] = Temp_MainBodyScript.transform; Friendly_Body_Scripts [i] = Temp_MainBodyScript; AI_CS Temp_AI_Script = Friendly_Body_Transforms [i].GetComponentInChildren <AI_CS> (); if (Temp_AI_Script) { Friendly_AI_Scripts [i] = Temp_AI_Script; } break; } } } else if (Temp_Transform.root.tag != "Finish") // Hostile tank. { for (int i = 0; i < Hostile_Body_Transforms.Length; i++) // Search empty. { if (Hostile_Body_Transforms [i] == null) { // Store components. Hostile_Body_Transforms [i] = Temp_MainBodyScript.transform; Hostile_Body_Scripts [i] = Temp_MainBodyScript; AI_CS Temp_AI_Script = Hostile_Body_Transforms [i].GetComponentInChildren <AI_CS> (); if (Temp_AI_Script) { Hostile_AI_Scripts [i] = Temp_AI_Script; } break; } } } } else { Debug.LogWarning("'Game_Controller' cannot find the MainBody of '" + Temp_Transform.name + "'. (Physics Tank Maker)"); } }
public void Set_Target(Transform Temp_Transform, MainBody_Setting_CS Temp_Script) // Called from "Game_Controller". { if (No_Attack) { return; } if (Target_Transform != Temp_Transform) { Lost_Target(); Target_Transform = Temp_Transform; Target_Root_Transform = Target_Transform.root; if (Temp_Script) { AI_Upper_Offset = Temp_Script.AI_Upper_Offset; AI_Lower_Offset = Temp_Script.AI_Lower_Offset; } } }
public void Fire(Transform Temp_Target, int Temp_Num) { if (Flag == false) { Flag = true; Number = Temp_Num; // Set target's position. MainBody_Setting_CS Temp_Script = Temp_Target.GetComponentInChildren <MainBody_Setting_CS>(); if (Temp_Script) { Target_Pos = Temp_Script.transform.position; } else { Target_Pos = Temp_Target.position; } } }
public bool RayCast_Check(Transform Temp_Transform, MainBody_Setting_CS Temp_Script) // Called from Game_Controller. { This_Transform.localPosition = Initial_Position; // Fix this position and rotation. Vector3 Temp_Pos = Temp_Transform.position + (Temp_Transform.up * Temp_Script.AI_Upper_Offset); Ray Temp_Ray = new Ray(Eye_Transform.position, Temp_Pos - Eye_Transform.position); RaycastHit Temp_RaycastHit; if (Physics.Raycast(Temp_Ray, out Temp_RaycastHit, Visibility_Radius, Ray_LayerMask)) // Ray hits anything. { if (Temp_RaycastHit.transform.root == Temp_Transform.root) // Ray hits the target. { return(true); } else // Ray does not hit the target. { return(false); } } else // Ray does not hit anything. { return(false); } }
void Start() { MainBody_Script = GetComponentInParent <MainBody_Setting_CS>(); }
void Assign_Target() { // Assign the target to friendly AI tanks. float Min_Distance = 10000.0f; Transform Temp_Target = null; MainBody_Setting_CS Temp_Target_Script = null; for (int i = 0; i < Friendly_Body_Transforms.Length; i++) { if (Friendly_AI_Scripts [i] && !Friendly_AI_Scripts [i].Fire_Flag) { for (int j = 0; j < Hostile_Body_Transforms.Length; j++) { if (Hostile_Body_Transforms [j] && Hostile_Body_Transforms [j].root.tag != "Finish") { float Temp_Distance = Vector3.Distance(Friendly_Body_Transforms [i].position, Hostile_Body_Transforms [j].position); if (Temp_Distance < Friendly_AI_Scripts [i].Visibility_Radius && Temp_Distance < Min_Distance) { if (Friendly_AI_Scripts [i].RayCast_Check(Hostile_Body_Transforms [j], Hostile_Body_Scripts [j])) { Min_Distance = Temp_Distance; Temp_Target = Hostile_Body_Transforms [j]; Temp_Target_Script = Hostile_Body_Scripts [j]; } } } } if (Temp_Target) { Friendly_AI_Scripts [i].Set_Target(Temp_Target, Temp_Target_Script); } } } // Assign the target to hostile AI tanks. Min_Distance = 10000.0f; Temp_Target = null; Temp_Target_Script = null; for (int i = 0; i < Hostile_Body_Transforms.Length; i++) { if (Hostile_AI_Scripts [i] && !Hostile_AI_Scripts [i].Fire_Flag) { for (int j = 0; j < Friendly_Body_Transforms.Length; j++) { if (Friendly_Body_Transforms [j] && Friendly_Body_Transforms [j].root.tag != "Finish") { float Temp_Distance = Vector3.Distance(Hostile_Body_Transforms [i].position, Friendly_Body_Transforms [j].position); if (Temp_Distance < Hostile_AI_Scripts [i].Visibility_Radius && Temp_Distance < Min_Distance) { if (Hostile_AI_Scripts [i].RayCast_Check(Friendly_Body_Transforms [j], Friendly_Body_Scripts [j])) { Min_Distance = Temp_Distance; Temp_Target = Friendly_Body_Transforms [j]; Temp_Target_Script = Friendly_Body_Scripts [j]; } } } } if (Temp_Target) { // Send message to "AI". Hostile_AI_Scripts [i].Set_Target(Temp_Target, Temp_Target_Script); } } } }
void Start() { This_Transform = transform; MainBody_Script = GetComponentInParent <MainBody_Setting_CS> (); }