コード例 #1
0
    // Use this for initialization
    protected virtual void Start()
    {
        if (prefab == null)
        {
            // end early
            Debug.Log("Please assign a drone prefab.");
            return;
        }

        // instantiate the drones
        GameObject droneTemp;

        drones = new List <GameObject>();
        for (int i = 0; i < droneCount; i++)
        {
            droneTemp = (GameObject)GameObject.Instantiate(prefab);
            DroneBehavior db = droneTemp.GetComponent <DroneBehavior>();
            db.drones = this.drones;
            db.swarm  = this;

            // spawn inside circle
            Vector2 pos = new Vector2(transform.position.x, transform.position.z) + Random.insideUnitCircle * spawnRadius;
            droneTemp.transform.position = new Vector3(pos.x, transform.position.y, pos.y);
            droneTemp.transform.parent   = transform;

            drones.Add(droneTemp);
        }
    }
コード例 #2
0
    IEnumerator MakeEnemies()
    {
        for (int i = 0; i < 10; i++)
        {
            GameObject enemy = GameObject.CreatePrimitive(PrimitiveType.Cube);


            enemy.transform.position = spawnPoint.transform.position;

            EnemyBehaviorContext context;
            IEnemyBehaviour      enemyBehavior;
            if (i < 5)
            {
                enemy.name    = "Drone";
                enemyBehavior = new DroneBehavior(Time.time, enemy, minX, maxX);
                enemy.GetComponent <MeshRenderer>().material.color = Color.blue;
            }
            else
            {
                enemy.name    = "Fighter";
                enemyBehavior = new FighterBehavior(Time.time, enemy, minX, maxX);
                enemy.GetComponent <MeshRenderer>().material.color = Color.red;
            }

            context = new EnemyBehaviorContext(enemyBehavior);
            enemyBehaviors.Add(context);

            yield return(new WaitForSeconds(1f));
        }
    }
コード例 #3
0
    IEnumerator MakeEnemies()
    {
        for (int i = 0; i < 10; i++)
        {
            GameObject enemy = GameObject.CreatePrimitive(PrimitiveType.Cube);
            

            enemy.transform.position = spawnPoint.transform.position;

            EnemyBehaviorContext context;
            IEnemyBehaviour enemyBehavior;
            if (i < 5)
            {
                enemy.name = "Drone";
                enemyBehavior = new DroneBehavior(Time.time, enemy, minX, maxX);
                enemy.GetComponent<MeshRenderer>().material.color = Color.blue;
            }
            else
            {
                enemy.name = "Fighter";
                enemyBehavior = new FighterBehavior(Time.time, enemy, minX, maxX);
                enemy.GetComponent<MeshRenderer>().material.color = Color.red;
            }

            context = new EnemyBehaviorContext(enemyBehavior);
            enemyBehaviors.Add(context);

            yield return new WaitForSeconds(1f);
        }
    }
コード例 #4
0
    // Use this for initialization
    protected override void OnStart()
    {
        if (prefab == null)
        {
            Debug.Log("[" + Time.time + "]Please assign a drone prefab.");
            return;
        }

        // instantiate the drones
        GameObject droneTemp;

        drones = new List <GameObject>();
        for (int i = 0; i < droneCount; i++)
        {
            droneTemp = (GameObject)GameObject.Instantiate(prefab);
            DroneBehavior db = droneTemp.GetComponent <DroneBehavior>();
            db.drones = this.drones;
            db.swarm  = this;

            // spawn inside circle
            Vector2 pos = new Vector2(transform.position.x, transform.position.z) + Random.insideUnitCircle * spawnRadius;
            droneTemp.transform.position = new Vector3(pos.x, transform.position.y, pos.y);
            droneTemp.transform.parent   = transform;

            originalSteer = droneTemp.GetComponent <DroneBehavior>().maxSteer;

            drones.Add(droneTemp);
        }

        // Resgister listener depending on who you are
        if (gameObject.tag == "SwarmPlayer1")
        {
            Messenger.RegisterListener(new Listener("Hunted_insects", gameObject, "SelectInsectsToCreate"));
        }
        if (gameObject.tag == "SwarmPlayer2")
        {
            Messenger.RegisterListener(new Listener("Hunted_insects", gameObject, "SelectInsectsToCreate"));
        }
        if (gameObject.tag == "free_swarm")
        {
            Messenger.RegisterListener(new Listener("Close_to_swarm_player1", gameObject, "SelectHuntedInsects1"));
            Messenger.RegisterListener(new Listener("Close_to_swarm_player2", gameObject, "SelectHuntedInsects2"));

            Messenger.RegisterListener(new Listener("Away_from_swarm_player1", gameObject, "FreedHuntedInsects1"));
            Messenger.RegisterListener(new Listener("Away_from_swarm_player2", gameObject, "FreedHuntedInsects2"));

            Messenger.RegisterListener(new Listener("Insect_catched_player1", gameObject, "DesactivateInsect"));
            Messenger.RegisterListener(new Listener("Insect_catched_player2", gameObject, "DesactivateInsect"));
        }

        Messenger.RegisterListener(new Listener("Creature_created", gameObject, "UpdatePlayerListsNewCreature"));
        Messenger.RegisterListener(new Listener("Texture_changed", gameObject, "UpdatePlayerListsTexture"));

        Messenger.RegisterListener(new Listener("Insects_of_swarm", gameObject, "Return_insects"));
    }
コード例 #5
0
    /// <summary>
    /// Spawns a drone at the first position in the NavigationPath.
    /// </summary>
    /// <param name="navIndex">Index of NavigationPath, Color, and Speed to use for the underdrone.</param>
    public void SpawnDrone(int index)
    {
        // Create drone and set initial position, rotation, scale.
        DroneNavigationPath path  = NavigationPaths[index].gameObject.GetComponent <DroneNavigationPath>();
        GameObject          drone = (GameObject)Instantiate(DronePrefab);

        drone.transform.parent   = this.transform;
        drone.transform.position = path.NavigationPoints[0].position;
        drone.transform.LookAt(path.NavigationPoints[1].transform);
        drone.transform.localScale = new Vector3(0.72f, 0.72f, 0.72f);

        // Set drone's speed and navigation path.
        DroneBehavior behavior = drone.AddComponent <DroneBehavior>();

        behavior.NavPath      = NavigationPaths[index].gameObject;
        behavior.Speed        = DroneSpeeds[index];
        behavior.NavPathIndex = index;

        // Set drone's color.
        FriendlyDrone friendly = drone.GetComponentInChildren <Animator>().gameObject.AddComponent <FriendlyDrone>();

        friendly.EmissiveColor = DroneColors[index];
    }
コード例 #6
0
ファイル: DroneBehavior.cs プロジェクト: imclab/KittenEscape
 void Awake()
 {
     Instance = this;
 }
コード例 #7
0
 void Awake()
 {
     switch (tag)
     {
         case "Enemy":
             drone = gameObject.GetComponent<DroneBehavior>();
             boxCol = gameObject.GetComponent<BoxCollider>();
             break;
         case "EnemyStructure":
             spawner = gameObject.GetComponent<SwarmSpawner>();
             boxCol = GetComponent<BoxCollider>();
             break;
         case "Soldier":
             soldier = GetComponent<Soldier>();
             soldierManager = GameObject.FindObjectOfType<SoldierManager>();
             break;
         default:
             break;
     }
 }