Beispiel #1
0
    private void SpawnEnemy()
    {
        Vector3 randomPositionInSpawnArea = new Vector3(
            Random.Range(spawnAreaBoxCollider.bounds.min.x, spawnAreaBoxCollider.bounds.max.x),
            0,
            Random.Range(spawnAreaBoxCollider.bounds.min.z, spawnAreaBoxCollider.bounds.max.z));
        Enemy newEnemy = Instantiate(enemyPrefab, randomPositionInSpawnArea, Quaternion.identity).GetComponent <Enemy>();

        newEnemy.initEnemyTarget(goal, gameManager, idCounter++);
        newEnemy.transform.LookAt(goal.transform);
        spawnedEnemies.Add(newEnemy.id, newEnemy);

        int enemyLevel = DifficultySettings.singleton.getNewSpawnedEnemyLevel();

        initEnemyStats(newEnemy, enemyLevel);
        SpawnedObject visualAtributes = calculateVisualAtributes(newEnemy, enemyLevel);

        newEnemy.init(visualAtributes);

        SpawnEnemyMsg msg = new SpawnEnemyMsg()
        {
            type = EnemyType.Soldier, details = visualAtributes
        };

        NetworkServer.SendToAll((short)CustomProtocol.SpawnEnemyMsg, msg);
    }
    private void handleEnemySpawnMsg(NetworkMessage msg)
    {
        SpawnEnemyMsg data  = msg.ReadMessage <SpawnEnemyMsg>();
        VisualObject  enemy = Instantiate(typeToObjects[data.type], data.details.pos, Quaternion.identity, null).GetComponent <VisualObject>();

        enemy.init(data.details);
        spawnedEnemies.Add(data.details.id, enemy);
    }