//### Asset情報 ###

    public void SetAsset(EnemyAsset ea)
    {
        asset         = ea;
        spawnInterval = asset.interval;
        intervalTime  = spawnInterval;
        SetSpawnPos(asset.pos, asset.diffPos);
        SetEnemy(asset.enemy);
    }
        private void SpawnEnemy(EnemyAsset asset)
        {
            EnemyView view = Object.Instantiate(asset.ViewPrefab);

            view.transform.position = m_Grid.GetStartNode().Position;
            EnemyData data = new EnemyData(asset);

            data.AttachView(view);
            view.CreateMovementAgent(m_Grid);

            Game.Player.EnemySpawned(data);
        }
        private void SpawnEnemy(EnemyAsset asset)
        {
            EnemyView view = Object.Instantiate(asset.ViewPrefab);

            Vector3 newPos    = m_Grid.GetStartNode().Position;
            var     transform = view.transform;
            Vector3 oldPos    = transform.position;

            transform.position = new Vector3(newPos.x, oldPos.y, newPos.z);

            EnemyData data = new EnemyData(asset);

            data.AttachView(view);
            view.CreateMovementAgent(m_Grid);

            Game.Player.EnemySpawned(data);
        }
Example #4
0
 private void load_asset(ref EnemyAsset obj, string name, float spawn_rate, float blurred_spawn_rate, Vector3 min_scale, Vector3 max_scale, float energy_gain, bool predator)
 {
     obj      = new EnemyAsset();
     obj.gobj = (GameObject)Resources.Load(name);
     foreach (Transform child in obj.gobj.transform)
     {
         if (child.name.IndexOf("mesh") != -1)
         {
             obj.mesh = child.gameObject; break;
         }
     }
     if (obj.mesh == null)
     {
         Debug.Log("no mesh object could be found for enemy (" + name + ")");
     }
     obj.min_scale          = min_scale;
     obj.max_scale          = max_scale;
     total_spawn_rate      += spawn_rate;
     obj.spawn_rate         = total_spawn_rate;
     obj.blurred_spawn_rate = blurred_spawn_rate;
     obj.energy_gain        = energy_gain;
     obj.predator           = predator;
     assets.Add(obj);
 }
Example #5
0
    public void create_enemy(EnemyAsset asset, Vector3 pos)
    {
        if (asset.predator && predator_count >= max_predators) return;

        //create enemy class and object
        Enemy new_enemy = new Enemy();
        new_enemy.gobj = GameObject.Instantiate(asset.gobj);
        new_enemy.asset = asset;
        BoxCollider[] colliders = new_enemy.gobj.GetComponents<BoxCollider>();
        if (colliders.Length >= 1) new_enemy.box_collider_body = colliders[0];
        if (colliders.Length >= 2) new_enemy.box_collider_head = colliders[1];

        //scale enemy
        bool blurred_enemy = Random.value < asset.blurred_spawn_rate;

        float m = Random.Range(0.0f, .2f);
        if (Random.value < .5f) m += Random.Range(.3f, .5f);
        if (blurred_enemy) {
            float b_scale = Random.Range(10.0f, 12.0f);
            if (asset == hammerhead || asset == great_white || asset == jellyfish) b_scale = Random.Range(3.0f, 4.0f);
            new_enemy.gobj.transform.localScale = asset.min_scale * b_scale;
        }
        else new_enemy.gobj.transform.localScale = asset.min_scale + ((asset.max_scale - asset.min_scale) * m);

        GameObject mesh_obj = null;
        foreach (Transform child in new_enemy.gobj.transform) {
            if (child.name.IndexOf("mesh") != -1) { mesh_obj = child.gameObject; break; }
        }
        new_enemy.mesh = mesh_obj.GetComponent<SkinnedMeshRenderer>().sharedMesh;
        new_enemy.mesh_obj = mesh_obj;
        Vector3 s = Vector3.Scale(new_enemy.box_collider_body.bounds.size, new_enemy.gobj.transform.localScale);

        if (blurred_enemy) { mesh_obj.layer = 8; new_enemy.blurred_enemy = true; }
        if (asset.predator) {
            ++predator_count;
            new_enemy.predator = true;
        }

        //gen 0-1 value in exactly 2 channels
        Vector3 colour_vec = Vector3.zero;
        float rand = Random.Range(0, 3);

        float c_intensity = 1;
        if (asset == jellyfish) c_intensity = .4f;
        else if (asset == great_white || asset == hammerhead) c_intensity = .4f;

        if (rand == 0) colour_vec = new Vector3(0.0f, 0.0f, c_intensity);
        else if (rand == 1) colour_vec = new Vector3(0.0f, c_intensity, 0.0f);
        else if (rand == 2) colour_vec = new Vector3(c_intensity, c_intensity, 0.0f);
        if (!blurred_enemy && asset.predator) colour_vec = new Vector3(c_intensity, 0.0f, 0.0f);

        Color colour = new Color(colour_vec.x, colour_vec.y, colour_vec.z);
        new_enemy.colour = colour;
        new_enemy.set_emission_colour(colour);

        //position enemy
        float depth = s.y;
        if (asset == jellyfish) depth = s.z;
        pos.y -= depth + 1;
        if (blurred_enemy) pos.y -= 2;
        pos.y = Mathf.Max(pos.y, -30.0f);
        new_enemy.gobj.transform.position = pos;

        //init and apply light
        new_enemy.init();

        float size = Mathf.Min(Mathf.Max(s.x, s.z), 50.0f);
        float intensity = .75f;
        if (blurred_enemy) { intensity = .55f; size /= 3.0f; }

        Light.lights.Add(new_enemy.light = Light.create(pos.x, pos.z, size, intensity, colour_vec.x, colour_vec.y, colour_vec.z, 1));

        enemies.Add(new_enemy);
    }
Example #6
0
 private void load_asset(ref EnemyAsset obj, string name, float spawn_rate, float blurred_spawn_rate, Vector3 min_scale, Vector3 max_scale, float energy_gain, bool predator)
 {
     obj = new EnemyAsset();
     obj.gobj = (GameObject)Resources.Load(name);
     foreach (Transform child in obj.gobj.transform) {
         if (child.name.IndexOf("mesh") != -1) { obj.mesh = child.gameObject; break; }
     }
     if (obj.mesh == null) Debug.Log("no mesh object could be found for enemy (" + name + ")");
     obj.min_scale = min_scale;
     obj.max_scale = max_scale;
     total_spawn_rate += spawn_rate;
     obj.spawn_rate = total_spawn_rate;
     obj.blurred_spawn_rate = blurred_spawn_rate;
     obj.energy_gain = energy_gain;
     obj.predator = predator;
     assets.Add(obj);
 }
Example #7
0
    public void create_enemy(EnemyAsset asset, Vector3 pos)
    {
        if (asset.predator && predator_count >= max_predators)
        {
            return;
        }

        //create enemy class and object
        Enemy new_enemy = new Enemy();

        new_enemy.gobj  = GameObject.Instantiate(asset.gobj);
        new_enemy.asset = asset;
        BoxCollider[] colliders = new_enemy.gobj.GetComponents <BoxCollider>();
        if (colliders.Length >= 1)
        {
            new_enemy.box_collider_body = colliders[0];
        }
        if (colliders.Length >= 2)
        {
            new_enemy.box_collider_head = colliders[1];
        }

        //scale enemy
        bool blurred_enemy = Random.value < asset.blurred_spawn_rate;

        float m = Random.Range(0.0f, .2f);

        if (Random.value < .5f)
        {
            m += Random.Range(.3f, .5f);
        }
        if (blurred_enemy)
        {
            float b_scale = Random.Range(10.0f, 12.0f);
            if (asset == hammerhead || asset == great_white || asset == jellyfish)
            {
                b_scale = Random.Range(3.0f, 4.0f);
            }
            new_enemy.gobj.transform.localScale = asset.min_scale * b_scale;
        }
        else
        {
            new_enemy.gobj.transform.localScale = asset.min_scale + ((asset.max_scale - asset.min_scale) * m);
        }

        GameObject mesh_obj = null;

        foreach (Transform child in new_enemy.gobj.transform)
        {
            if (child.name.IndexOf("mesh") != -1)
            {
                mesh_obj = child.gameObject; break;
            }
        }
        new_enemy.mesh     = mesh_obj.GetComponent <SkinnedMeshRenderer>().sharedMesh;
        new_enemy.mesh_obj = mesh_obj;
        Vector3 s = Vector3.Scale(new_enemy.box_collider_body.bounds.size, new_enemy.gobj.transform.localScale);

        if (blurred_enemy)
        {
            mesh_obj.layer = 8; new_enemy.blurred_enemy = true;
        }
        if (asset.predator)
        {
            ++predator_count;
            new_enemy.predator = true;
        }

        //gen 0-1 value in exactly 2 channels
        Vector3 colour_vec = Vector3.zero;
        float   rand       = Random.Range(0, 3);

        float c_intensity = 1;

        if (asset == jellyfish)
        {
            c_intensity = .4f;
        }
        else if (asset == great_white || asset == hammerhead)
        {
            c_intensity = .4f;
        }

        if (rand == 0)
        {
            colour_vec = new Vector3(0.0f, 0.0f, c_intensity);
        }
        else if (rand == 1)
        {
            colour_vec = new Vector3(0.0f, c_intensity, 0.0f);
        }
        else if (rand == 2)
        {
            colour_vec = new Vector3(c_intensity, c_intensity, 0.0f);
        }
        if (!blurred_enemy && asset.predator)
        {
            colour_vec = new Vector3(c_intensity, 0.0f, 0.0f);
        }

        Color colour = new Color(colour_vec.x, colour_vec.y, colour_vec.z);

        new_enemy.colour = colour;
        new_enemy.set_emission_colour(colour);

        //position enemy
        float depth = s.y;

        if (asset == jellyfish)
        {
            depth = s.z;
        }
        pos.y -= depth + 1;
        if (blurred_enemy)
        {
            pos.y -= 2;
        }
        pos.y = Mathf.Max(pos.y, -30.0f);
        new_enemy.gobj.transform.position = pos;

        //init and apply light
        new_enemy.init();

        float size      = Mathf.Min(Mathf.Max(s.x, s.z), 50.0f);
        float intensity = .75f;

        if (blurred_enemy)
        {
            intensity = .55f; size /= 3.0f;
        }

        Light.lights.Add(new_enemy.light = Light.create(pos.x, pos.z, size, intensity, colour_vec.x, colour_vec.y, colour_vec.z, 1));

        enemies.Add(new_enemy);
    }