I have a script of formations that my enemy ships go to but they go to a prefab called “4 Slot Formation” I want to have like 10 of these on the map and my enemies go to the formations that are empty till all are full of their slots, I’ve got the logic on how they go to 1 of them, but I don’t really know how to make them go to other ones because they are not unique, and or I don’t know how to script them to all work together. Here is my script of how the fighters go to the “4 Slot Formation”
using UnityEngine;
using System.Collections;
public class Fighter_AI : MonoBehaviour {
// Access Formation AI
public GameObject script; // Access for getcomponent<Formation_AI>
// Smooth Move to formation
public float smoothTranslateSpeed = 0.3F; // Speed for going from spawn to formation with lerp
public Transform playerTarget; //Target for the enemies to target the player and lookat
public Transform playerDist; // Going to use this for mutants they will freely come to the player but always stop at a certain distance, maybe it can be a random range too so it looks interesting
public Transform fightFormTransform; // Think this is for the formation transforms
// Setup for the sockets
public Transform FormTarg1; // Formation socket1
public Transform FormTarg2; // Formation socket2
public Transform FormTarg3; // Formation socket3
// Variables
public bool emtyS1;
public bool goToSlot01 = false; // For the logic
public bool goToSlot02 = false; // For the logic
public bool goToSlot03 = false; // For the logic
// Use this for initialization
void Start () {
playerTarget = Player_Controller.playerTransform; // The player target declaration
playerDist = Player_Controller.playerTransform; // Player Distance declaration
fightFormTransform = Formation_AI.FormTarget; // formation target declaration
// Targets for the Sockets
FormTarg1 = Formation_AI.Form_Slot1;
FormTarg2 = Formation_AI.Form_Slot2;
FormTarg3 = Formation_AI.Form_Slot3;
}
void Awake()
{
script = GameObject.Find("4 Slot Formation");
//Formation_AI script = GameObject.Find("4 Slot Formation").GetComponent<Formation_AI>();
if (script.GetComponent<Formation_AI>().isEmptySlot1)
{
script.GetComponent<Formation_AI>().isEmptySlot1 = false;
goToSlot01 = true;
goToSlot02 = false;
goToSlot03 = false;
}
else if (script.GetComponent<Formation_AI>().isEmptySlot2)
{
script.GetComponent<Formation_AI>().isEmptySlot2 = false;
goToSlot01 = false;
goToSlot02 = true;
goToSlot03 = false;
}
else if (script.GetComponent<Formation_AI>().isEmptySlot3)
{
script.GetComponent<Formation_AI>().isEmptySlot3 = false;
goToSlot01 = false;
goToSlot02 = false;
goToSlot03 = true;
}
}
// Update is called once per frame
void Update () {
transform.LookAt(playerTarget);
if (playerDist)
{
float dist = Vector3.Distance(playerDist.position, transform.position);
//Debug.Log("Distance to other: " + dist);
}
if (goToSlot01)
{
GoToSlot01();
}
else if (goToSlot02)
{
GoToSlot02();
}
else if (goToSlot03)
{
GoToSlot03();
}
}
// Moves the ships to the right spots. May need to replace the target with a variable that gets adjusted by how many formations are added
void GoToSlot01()
{
transform.position = Vector3.Lerp(transform.position, FormTarg1.position, Time.deltaTime * smoothTranslateSpeed);
}
void GoToSlot02()
{
transform.position = Vector3.Lerp(transform.position, FormTarg2.position, Time.deltaTime * smoothTranslateSpeed);
}
void GoToSlot03()
{
transform.position = Vector3.Lerp(transform.position, FormTarg3.position, Time.deltaTime * smoothTranslateSpeed);
}
}