상속: MonoBehaviour
예제 #1
0
    public void createEnemies(int faction)
    {
        GameObject newEnemy = Instantiate(enemies[choice], transform.position + new Vector3(0, 1f, 0), transform.rotation, GetComponentInParent <Spawn>().gameObject.transform);

        if (choice == 0)
        {
            MeleeEnemy setup = newEnemy.GetComponent <MeleeEnemy>();
            setup.healthMax    = meleeNums.enemyHealth;  //10
            setup.speed        = meleeNums.enemySpeed;   //2
            setup.gravity      = meleeNums.enemyGravity; //20
            setup.attackRange  = meleeNums.attackRange;  //5
            setup.chargeTime   = meleeNums.chargeTime;   //5
            setup.postLockTime = meleeNums.postLockTime; //2
            setup.chargeDist   = meleeNums.chargeDist;   //10
            setup.orig         = GetComponentInParent <ScalingTracker>().factionMats[faction];
            setup.faction      = faction;

            DealDamage dmgSetup = newEnemy.GetComponent <DealDamage>();
            dmgSetup.damage = meleeNums.enemyDamage;//5
        }
        else
        {
            MainRanged setup = newEnemy.GetComponent <MainRanged>();
            setup.RoF       = rangedNums.RoF;
            setup.radius    = rangedNums.radius;
            setup.turnSpeed = rangedNums.turnSpeed;
            setup.healthMax = rangedNums.healthMax;
            setup.height    = rangedNums.height;
            setup.orig      = GetComponentInParent <ScalingTracker>().factionMats[faction];
            setup.faction   = faction;

            ProjectileValues dmgSetup = newEnemy.GetComponentInChildren <ProjectileValues>();
            dmgSetup.damage = rangedNums.damage;//5
        }
    }
예제 #2
0
    void GruntRound()
    {
        int crrtBeat = Conductor.GetBeat() - FirstBeat;

        // Return early if round has not begun
        if (crrtBeat < 0)
        {
            return;
        }
        // Spawn grunts periodically if round has begun
        if (mNumGruntsSpawned != mNumGrunts && crrtBeat == mNumGruntsSpawned)
        {
            // Play VoicesLine When Grunts Spawn (But Only Once)
            if (mVoiceLineIndex == 1 || mVoiceLineIndex == 3 || mVoiceLineIndex == 5)
            {
                VoiceLines[mVoiceLineIndex++].Play();
            }
            MeleeEnemy enemy = Instantiate(Grunt, GruntSpawns[mNumGruntsSpawned % GruntSpawns.Count].position, Quaternion.identity);
            enemy.Target = Player;
            enemy.HealthController.OnDeath += IncrementGruntKillCount;
            mNumGruntsSpawned += 1;
        }

        if (mNumRangedSpawned != mNumRanged && crrtBeat == mNumRangedSpawned)
        {
            RangedEnemy enemy = Instantiate(RangedGrunt, RangedSpawns[mNumRangedSpawned % RangedSpawns.Count].position,
                                            Quaternion.identity);
            enemy.Target = Player;
            enemy.HealthController.OnDeath += IncrementRangedKillCount;
            mNumRangedSpawned += 1;
        }
    }
예제 #3
0
 private void OnTriggerEnter(Collider other)
 {
     enemySpawnManager = GameObject.Find("Enemy Spawn Manager").GetComponent <EnemySpawnManager>();
     playerStats       = GameObject.Find("GameManager").GetComponent <PlayerStats>();
     if (other.gameObject.CompareTag("Range Enemy"))
     {
         prefabs.SetActive(false);
         rangeEnemy = other.GetComponent <RangeEnemy>();
         rangeEnemy.healthRangeEnemy -= playerStats.attackPower;
         if (rangeEnemy.healthRangeEnemy <= 0)
         {
             other.gameObject.SetActive(false);
             rangeEnemy.healthRangeEnemy         = 100;
             other.gameObject.transform.position = enemySpawnManager.RandomPosition();
             rangeEnemy.weaponIsActive           = true;
         }
     }
     if (other.gameObject.CompareTag("Melee Enemy"))
     {
         prefabs.SetActive(false);
         meleeEnemy = other.GetComponent <MeleeEnemy>();
         meleeEnemy.healthMeleeEnemy -= playerStats.attackPower;
         if (meleeEnemy.healthMeleeEnemy > 0)
         {
             meleeEnemy.SkeletonAnim.SetTrigger("GetDamage");
         }
     }
 }
예제 #4
0
    //------------------------Collision Handling------------------------
    private void OnCollisionEnter2D(Collision2D collision) //Handles collisions between player and physical GameObjects
    {
        GameObject other = collision.gameObject;
        Vector2    collisionDirection = transform.position - other.transform.position;

        if (canTakeDamage)            //Player touches an enemy
        {
            if (other.tag == "Enemy") //Player takes damage from contact with enemy
            {
                RangeEnemy rangeScript = other.GetComponent <RangeEnemy>();
                MeleeEnemy meleeScript = other.GetComponent <MeleeEnemy>();
                if (rangeScript)
                {
                    TakeDamage(rangeScript.Damage, collisionDirection);
                }
                else if (meleeScript)
                {
                    TakeDamage(meleeScript.Damage, collisionDirection);
                }
            }
            else if (other.tag == "EnemyProjectile") //Player touches an enemy's projectile
            {
                Projectile projScript = other.GetComponent <Projectile>();
                if (projScript) //Player takes damage from contact with enemy's projectile
                {
                    TakeDamage(projScript.Damage, collisionDirection);
                    Destroy(other);
                }
            }
        }
    }
예제 #5
0
    //public Object EnemyPrefab2;
    public void SpawnEnemy(int wave)
    {
        wave++;
        MeleeEnemy spawnedEnemy = Instantiate(EnemyPrefab, new Vector3(Random.Range(-10, 10), Random.Range(-10, 10), 0), Quaternion.identity);

        spawnedEnemy.MaxHealth += Random.Range(1 * wave + 1, 4 * wave);
        spawnedEnemy.Speed     *= 1;
        spawnedEnemy.Health     = spawnedEnemy.MaxHealth;
    }
예제 #6
0
    void Start()
    {
        // Get the current parent's transform.
        transformCache = GetComponent<Transform>();
        targetMob = mob.GetComponent<MeleeEnemy>();

        // Assign the health bars current and max values.
        enemyHealthSlider.maxValue = targetMob.maxHealth;
        enemyHealthSlider.value = targetMob.health;
    }
예제 #7
0
    private void Awake()
    {
        stateMachine = GetComponent <MeleeSM>();

        meleeEnemy   = GetComponentInParent <MeleeEnemy>();
        navMeshAgent = GetComponentInParent <NavMeshAgent>();
        animator     = GetComponentInParent <Animator>();

        player = FindObjectOfType <Player>();
    }
예제 #8
0
	public bool checkForAttackers(MeleeEnemy enemy)
	{
		List<MeleeEnemy> testList = new List<MeleeEnemy> (this.enemyList);
		testList.Remove(enemy);

		foreach (MeleeEnemy e in testList)
		{
			if (e.attacking == true)
			{
				return true;
			}
		}
		return false;
	}
예제 #9
0
    public bool checkForAttackers(MeleeEnemy enemy)
    {
        List <MeleeEnemy> testList = new List <MeleeEnemy> (this.enemyList);

        testList.Remove(enemy);

        foreach (MeleeEnemy e in testList)
        {
            if (e.attacking == true)
            {
                return(true);
            }
        }
        return(false);
    }
예제 #10
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.tag == "MeleeEnemy")
     {
         MeleeEnemy meleeEnemy = collision.gameObject.GetComponent <MeleeEnemy>();
         meleeEnemy.DoDamage();
         Destroy(gameObject);
     }
     else if (collision.gameObject.tag == "RangedEnemy")
     {
         RangedEnemy rangedEnemy = collision.gameObject.GetComponent <RangedEnemy>();
         rangedEnemy.DoDamage();
         Destroy(gameObject);
     }
 }
    void OnSceneGUI()
    {
        MeleeEnemy fow = (MeleeEnemy)target;

        Handles.color = Color.white;
        Handles.DrawWireArc(fow.transform.position, Vector3.up, Vector3.forward, 360, fow.viewRadius);
        Vector3 viewAngleA = fow.DirFromAngel(-fow.viewAngle / 2, false);
        Vector3 viewAngleB = fow.DirFromAngel(fow.viewAngle / 2, false);

        Handles.DrawLine(fow.transform.position, fow.transform.position + viewAngleA * fow.viewRadius);
        Handles.DrawLine(fow.transform.position, fow.transform.position + viewAngleB * fow.viewRadius);

        Handles.color = Color.red;
        foreach (Transform visibleTarget in fow.visibleTarget)
        {
            Handles.DrawLine(fow.transform.position, visibleTarget.position);
        }
    }
예제 #12
0
    public float numberDistanceForMelee = 1; //расстояние для милишной атаки


    void Start()
    {
        AImanager.AIlist.Add(this);//this или getComponnent? передаём ссылку на экземпляр в менеджер
        gameObject.name = "Monster " + Random.Range(0, 100);



        _rigidbody      = GetComponent <Rigidbody2D>();
        _rigidbody.mass = mass;

        MOVE  = GetComponent <MoveEnemy>();
        SHOOT = GetComponent <ShootingEnemy>();
        MELEE = GetComponent <MeleeEnemy>();
        DEATH = GetComponent <Death>();
        //player = GameObject.Find("Player");
        //_animation = GetComponent<Animator>();
        //body = GetComponent<Rigidbody2D>();
    }
예제 #13
0
    //private bool canMove;
    // Use this for initialization
    void Start()
    {
        maxEnemies = 4;
        meleeEnemyReference = meleeprefab.GetComponent<MeleeEnemy> ();
        rangedEnemyReference = rangedprefab.GetComponent<RangedEnemy> ();
        GameObject[] enemyObjs;
        //gray;// = GameObject.Find ("Grayout").GetComponent<SpriteRenderer>();

        player = GameObject.Find("Player").GetComponent<PlayerCharacter>();
        puzzle = GameObject.Find ("PuzzleManager").GetComponent<PuzzleManager> ();
        enemyObjs = GameObject.FindGameObjectsWithTag("enemy");
        enemies = new List<Enemy>();
        for (int i = 0; i < enemyObjs.Length; i++) {
            enemies.Add(enemyObjs[i].GetComponent<Enemy>());
        }
        //canMove = true;
        spawnTimer = 0;
        coolDownTimer = 5;
        turn = 1;
        enemyCount = 0;
    }
예제 #14
0
    //private bool canMove;

    // Use this for initialization
    void Start()
    {
        maxEnemies           = 4;
        meleeEnemyReference  = meleeprefab.GetComponent <MeleeEnemy> ();
        rangedEnemyReference = rangedprefab.GetComponent <RangedEnemy> ();
        GameObject[] enemyObjs;
        //gray;// = GameObject.Find ("Grayout").GetComponent<SpriteRenderer>();

        player    = GameObject.Find("Player").GetComponent <PlayerCharacter>();
        puzzle    = GameObject.Find("PuzzleManager").GetComponent <PuzzleManager> ();
        enemyObjs = GameObject.FindGameObjectsWithTag("enemy");
        enemies   = new List <Enemy>();
        for (int i = 0; i < enemyObjs.Length; i++)
        {
            enemies.Add(enemyObjs[i].GetComponent <Enemy>());
        }
        //canMove = true;
        spawnTimer    = 0;
        coolDownTimer = 5;
        turn          = 1;
        enemyCount    = 0;
    }
예제 #15
0
    private void InstantiateEnemy(TEnemyTypes enemyType, TZones zone, int spawnID)
    {
        // Create variables
        MeleeEnemy    l_CurrentMeleeEnemy    = null;
        DistanceEnemy l_CurrentDistanceEnemy = null;

        // Depending on enemy type add in list and get enemy inactive
        switch (enemyType)
        {
        case TEnemyTypes.Teeth:
            l_CurrentMeleeEnemy = GameController.Instance.GetTeethEnemyInactive();
            m_MeleeEnemiesAliveList.Add(l_CurrentMeleeEnemy);
            break;

        case TEnemyTypes.Helicopter:
            l_CurrentDistanceEnemy = GameController.Instance.GetHelicotperEnemyInactive();
            M_DistanceEnemiesAliveList.Add(l_CurrentDistanceEnemy);
            break;

        case TEnemyTypes.Robot:
            l_CurrentMeleeEnemy = GameController.Instance.GetRobotEnemyInactive();
            m_MeleeEnemiesAliveList.Add(l_CurrentMeleeEnemy);
            break;
        }
        // If enemy is melee
        if (l_CurrentMeleeEnemy != null)
        {
            // ChangePosition depending on zone
            switch (zone)
            {
            case TZones.Military:
                l_CurrentMeleeEnemy.OnInit(m_MilitarySpawnPositions[spawnID].transform.position);
                l_CurrentMeleeEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentMeleeEnemy.m_NavMeshAgent.Warp(m_MilitarySpawnPositions[spawnID].transform.position);
                break;

            case TZones.Twin1:
                l_CurrentMeleeEnemy.OnInit(m_MedievalSpawnPositions1[spawnID].transform.position);
                l_CurrentMeleeEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentMeleeEnemy.m_NavMeshAgent.Warp(m_MedievalSpawnPositions1[spawnID].transform.position);
                break;

            case TZones.Twin2:
                l_CurrentMeleeEnemy.OnInit(m_MedievalSpawnPositions2[spawnID].transform.position);
                l_CurrentMeleeEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentMeleeEnemy.m_NavMeshAgent.Warp(m_MedievalSpawnPositions2[spawnID].transform.position);
                break;

            case TZones.Student:
                l_CurrentMeleeEnemy.OnInit(m_StudentSpanwPositions[spawnID].transform.position);;
                l_CurrentMeleeEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentMeleeEnemy.m_NavMeshAgent.Warp(m_StudentSpanwPositions[spawnID].transform.position);
                break;

            case TZones.Barbie:
                l_CurrentMeleeEnemy.OnInit(m_BarbieSpawnPositions[spawnID].transform.position);
                l_CurrentMeleeEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentMeleeEnemy.m_NavMeshAgent.Warp(m_BarbieSpawnPositions[spawnID].transform.position);
                break;
            }
        }
        // If is distance enemy
        else
        {
            // ChangePosition depending on zone
            switch (zone)
            {
            case TZones.Military:
                l_CurrentDistanceEnemy.OnInit(m_MilitarySpawnPositions[spawnID].transform.position);
                l_CurrentDistanceEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentDistanceEnemy.m_NavMeshAgent.Warp(m_MilitarySpawnPositions[spawnID].transform.position);
                break;

            case TZones.Twin1:
                l_CurrentDistanceEnemy.OnInit(m_MedievalSpawnPositions1[spawnID].transform.position);
                l_CurrentDistanceEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentDistanceEnemy.m_NavMeshAgent.Warp(m_MedievalSpawnPositions1[spawnID].transform.position);
                break;

            case TZones.Twin2:
                l_CurrentDistanceEnemy.OnInit(m_MedievalSpawnPositions2[spawnID].transform.position);
                l_CurrentDistanceEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentDistanceEnemy.m_NavMeshAgent.Warp(m_MedievalSpawnPositions2[spawnID].transform.position);
                break;

            case TZones.Student:
                l_CurrentDistanceEnemy.OnInit(m_StudentSpanwPositions[spawnID].transform.position);
                l_CurrentDistanceEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentDistanceEnemy.m_NavMeshAgent.Warp(m_StudentSpanwPositions[spawnID].transform.position);
                break;

            case TZones.Barbie:
                l_CurrentDistanceEnemy.OnInit(m_BarbieSpawnPositions[spawnID].transform.position);
                l_CurrentDistanceEnemy.m_NavMeshAgent.enabled = true;
                l_CurrentDistanceEnemy.m_NavMeshAgent.Warp(m_BarbieSpawnPositions[spawnID].transform.position);
                break;
            }
        }
    }
예제 #16
0
    void Start()
    {
        viewCamera = Camera.main;

        // pointer to the Enemy,cs script component
        enemy = gameObject.GetComponent<MeleeEnemy>();

            // Store the transform of the slider object
        transformCache = enemyHealthSlider.GetComponent<Transform>();

        // Initalize the health bar's current and maximum health
        enemyHealthSlider.maxValue = enemy.maxHealth;
        enemyHealthSlider.value = enemy.health;

        // Get the bounds of the gameobject's render mesh and pass the height to offset
        mobMesh = gameObject.GetComponent<MeshFilter>().mesh;
        offset = BoundsToScreenRect(mobMesh.bounds);
    }
예제 #17
0
 public void addEnemyToList(MeleeEnemy enemy)
 {
     print("adding enemy" + enemy.ToString());
     this.enemyList.Add(enemy);
 }
예제 #18
0
 public void removeEnemyFromList(MeleeEnemy enemy)
 {
     this.enemyList.Remove(enemy);
 }
예제 #19
0
	public void addEnemyToList(MeleeEnemy enemy)
	{
		print ("adding enemy" + enemy.ToString());
		this.enemyList.Add (enemy);
	}
예제 #20
0
 void Start()
 {
     // Get current and max health from parent game object script.
     mob = transform.parent.gameObject;
     targetMob = mob.GetComponent<MeleeEnemy>();
 }
예제 #21
0
        /// <summary>
        /// Takes a Room and creates everything that is not a floor tile
        /// </summary>
        /// <param name="enemyTexture">Texture of enemies in this room</param>
        /// <param name="wallTexture">Texture of walls in this room</param>
        public void initRoom(Texture2D wallTextures, Texture2D floorTextures, Graph.Graph graph)
        {
            //Init room's textures
            this.wallTextures  = wallTextures;
            this.floorTextures = floorTextures;

            //Should change this later
            int tileSize          = 64;
            int roomSize          = 10;
            int enemySpriteWidth  = 39;
            int enemySpriteHeight = 38;
            Pod pod = new Pod();

            for (int i = 0; i < roomSize; i++)
            {
                for (int j = 0; j < roomSize; j++)
                {
                    Vector2 currPos =
                        new Vector2(
                            position.X + tileSize * i,
                            position.Y + tileSize * j);
                    Vector2 midPos =
                        new Vector2(
                            currPos.X + (tileSize / 4),
                            currPos.Y + (tileSize / 4));
                    switch (tileLayout[i, j])
                    {
                    //Create walls
                    case TileType.WALL:
                        ChunkManager.Instance.Add(
                            new Wall(
                                floorTextures,
                                currPos,
                                new Rectangle(
                                    (int)currPos.X,
                                    (int)currPos.Y,
                                    tileSize,
                                    tileSize)));
                        break;

                    //Move player
                    case TileType.PLAYER:
                        Player.Instance.Position = currPos;
                        Player.Instance.ResetPlayerNewMap();
                        Player.Instance.CurrWeapon.ResetWeapon();

                        Weapons.Weapon temp = Player.Instance.CurrWeapon;
                        temp.X = currPos.X + Player.Instance.BoundingBox.Width / 2;
                        temp.Y = currPos.Y + Player.Instance.BoundingBox.Height / 2;
                        Camera.Instance.resetPosition(Player.Instance.Position);

                        //Add this position to the graph
                        graph.Add(new Graph.GraphNode(midPos));
                        spawnroom = true;
                        break;

                    //Create Melee Enemies
                    case TileType.MELEEENEMY:

                        graph.Add(new Graph.GraphNode(midPos));

                        //Create new enemy
                        MeleeEnemy newEnemy =
                            new MeleeEnemy(
                                TextureManager.Instance.GetEnemyTexture("EnemyTexture"),
                                midPos,
                                new Rectangle(
                                    (int)midPos.X,
                                    (int)midPos.Y,
                                    enemySpriteWidth,
                                    enemySpriteHeight));

                        //Add Enemy to game
                        EntityManager.Instance.Add(newEnemy);
                        ChunkManager.Instance.Add(newEnemy);
                        pod.Add(newEnemy);
                        break;

                    //Create Turret Enemies
                    case TileType.TURRET:
                        //Create new enemy
                        TurretEnemy turret =
                            new TurretEnemy(
                                TextureManager.Instance.GetEnemyTexture("EnemyTexture"),
                                midPos,
                                new Rectangle(
                                    (int)midPos.X,
                                    (int)midPos.Y,
                                    enemySpriteWidth,
                                    enemySpriteHeight));

                        //Add Enemy to game
                        EntityManager.Instance.Add(turret);
                        ChunkManager.Instance.Add(turret);
                        pod.Add(turret);
                        break;

                    case TileType.DASHENEMY:
                        graph.Add(new Graph.GraphNode(midPos));

                        //Create new enemy
                        DashEnemy dash =
                            new DashEnemy(
                                TextureManager.Instance.GetEnemyTexture("EnemyTexture"),
                                midPos,
                                new Rectangle(
                                    (int)midPos.X,
                                    (int)midPos.Y,
                                    enemySpriteWidth,
                                    enemySpriteHeight));

                        //Add Enemy to game
                        EntityManager.Instance.Add(dash);
                        ChunkManager.Instance.Add(dash);
                        pod.Add(dash);
                        break;

                    default:
                        //Add this position to the graph
                        graph.Add(new Graph.GraphNode(midPos));
                        break;
                    }
                }
            }
            PodManager.Instance.Add(pod);

            InitTextureMap();
        }
예제 #22
0
	public void removeEnemyFromList(MeleeEnemy enemy)
	{
		this.enemyList.Remove (enemy);
	}
예제 #23
0
 public StabOutState(MeleeEnemy m) : base(m)
 {
 }
예제 #24
0
 public StabInState(MeleeEnemy m) : base(m)
 {
 }
예제 #25
0
파일: MeleeEnemy.cs 프로젝트: fhausman/gds3
 public MeleeEnemyAttack(MeleeEnemy e)
 {
     enemy    = e;
     duration = enemy.Animator.runtimeAnimatorController.animationClips.First(a => a.name == "Attack").length;
 }