コード例 #1
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Enemy") && !bUsed)
        {
            AudioSource mSFXBox = this.gameObject.AddComponent <AudioSource>();
            mSFXBox.outputAudioMixerGroup = m_Channel;
            mSFXBox.clip = crashSFX;
            mSFXBox.time = 1;
            mSFXBox.Play();


            WerewolfAI ai = collision.gameObject.GetComponent <WerewolfAI>();
            if (ai != null)
            {
                //this.transform.parent.transform.parent.GetComponent<Room>().NPCs.Remove(collision.gameObject);
                collision.gameObject.transform.parent.GetComponent <Room>().NPCs.Remove(collision.gameObject);
                ai.TakeDamage(ai.HP);
            }

            bUsed = true;
            GetComponent <SpriteRenderer>().enabled = false;
            GetComponent <Collider2D>().enabled     = false;
            GetComponent <Rigidbody2D>().simulated  = false;
        }
    }
コード例 #2
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        ServantAI  servant  = AIParent.GetComponent <ServantAI>();
        WerewolfAI werewolf = AIParent.GetComponent <WerewolfAI>();

        if (collision.CompareTag("Servant") && werewolf != null)
        {
            werewolf.newState     = WerewolfAI.EWerewolfStates.Chasing;
            werewolf.singleTarget = collision.gameObject.transform;
        }
        else if (collision.CompareTag("ManorLord") && werewolf != null)
        {
            werewolf.newState     = WerewolfAI.EWerewolfStates.Chasing;
            werewolf.singleTarget = collision.gameObject.transform;
        }
        else if (collision.CompareTag("Enemy") && servant != null)
        {
            if (servant.hasWolfsbane)
            {
                servant.newState     = ServantAI.EServantStates.PresentingWolfsbane;
                servant.singleTarget = collision.gameObject.transform;
            }
            else if (servant.CurrentState != ServantAI.EServantStates.CreatingWolfsbane || servant.CurrentState != ServantAI.EServantStates.FoundFoodbowl)
            {
                servant.newState = ServantAI.EServantStates.Running;
            }
        }
        else if (collision.CompareTag("Food Bowl") && servant != null)
        {
            servant.newState     = ServantAI.EServantStates.FoundFoodbowl;
            servant.singleTarget = collision.gameObject.transform;
        }
    }
コード例 #3
0
    private void OnTriggerExit2D(Collider2D collision)
    {
        WerewolfAI werewolf = AIParent.GetComponent <WerewolfAI>();

        if (collision.CompareTag("Servant") && werewolf != null)
        {
            werewolf.singleTarget = null;
        }
    }
コード例 #4
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        WerewolfAI werewolf = collision.gameObject.GetComponent <WerewolfAI>();

        if (collision.CompareTag("Enemy") && werewolf != null)
        {
            werewolf.newState = WerewolfAI.EWerewolfStates.Cursed;
            werewolf.Roar();
        }
    }
コード例 #5
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        WerewolfAI werewolf = collision.gameObject.GetComponent <WerewolfAI>();

        if (collision.CompareTag("Enemy"))
        {
            if (werewolf.CurrentState != WerewolfAI.EWerewolfStates.Chasing)
            {
                werewolf.TakeDamage(werewolf.HP);
            }
        }
    }
コード例 #6
0
    /// <summary>
    /// Get the spawnquota, the current spawn id's and enemy arrangement and spawn the appropriate number of enemies
    /// </summary>
    public void SpawnEnemies()
    {
        MethodBase SpawnEnemiesMethod = MethodBase.GetCurrentMethod();

        if (TotalSpawnedEnemies < TotalEnemiesToBeSpawned)
        {
            InitializeCurrentWaveQuota();

            for (uint CurrentEnemyInQuota = 0; CurrentEnemyInQuota < CurrentSpawnQuota; CurrentEnemyInQuota++)
            {
                // This is used for a random spawn range within a 3d box where the ground is
                //  Vector3 RandomOffset = new Vector3(Random.Range(SpawnRandomRange.x / -2f, SpawnRandomRange.x / 2f), 0f, Random.Range(SpawnRandomRange.z / -2f, SpawnRandomRange.z / 2f));
                Vector3 RandomOffset = new Vector3(Random.Range(SpawnRandomRange.x / -2f, SpawnRandomRange.x / 2f), 0f, 0f);

                // Instantiate enemy at the appropriate spawner, select its type
                int       CurrentSpawnIndex = Waves[CurrentWaveID - 1].EnemyArrangement[CurrentEnemyInQuota].SpawnId;
                Transform SpawnInThisBox    = SpawnPoints[CurrentSpawnIndex];

                GameObject SpawnedEnemy          = Instantiate(EnemyPrefab, SpawnInThisBox.position + RandomOffset, Quaternion.identity);
                WerewolfAI EnemyBehaviorControls = SpawnedEnemy.GetComponent <WerewolfAI>();
                SpawnedEnemy.transform.parent = WaveOrganizer.transform;

                EnemyBehaviorControls.masterCommander = this.gameObject.GetComponent <WaveController>();

                EnemyBehaviorControls.MonsterID = TotalSpawnedEnemies + 1;
                EnemyBehaviorControls.WaveID    = CurrentWaveID;
                EnemyBehaviorControls.name      = EnemyBehaviorControls.AIType.ToString() + " " + EnemyBehaviorControls.MonsterID + " Wave " + EnemyBehaviorControls.WaveID;

                EnemyBehaviorControls.movementEnabled = true;
                EnemyBehaviorControls.attackEnabled   = true;

                CurrentSpawnedEnemies++;
                TotalSpawnedEnemies++;
            }
            if (CurrentSpawnedEnemies == SpawnQuotaGoal)
            {
                CurrentWaveID++;
                WaveOrganizer                  = new GameObject();
                WaveOrganizer.name             = "Wave ( " + CurrentWaveID + " )";
                WaveOrganizer.transform.parent = WaveOrganizerContainer.transform;
                EnemiesDeadInWave              = 0;

                if (SpawnSystemToggle != EWaveSystemVersion.AfterLastEnemyInWaveWithDelay)
                {
                    CurrentSpawnedEnemies = 0;
                }
            }
        }
    }
コード例 #7
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.CompareTag("Enemy"))
     {
         //collision.gameObject.transform.parent = this.transform;
         WerewolfAI ai = collision.gameObject.GetComponent <WerewolfAI>();
         if (ai != null)
         {
             //this.transform.parent.GetComponent<Room>().NPCs.Remove(collision.gameObject);
             collision.gameObject.transform.parent.GetComponent <Room>().NPCs.Remove(collision.gameObject);
             ai.TakeDamage(ai.HP);
             StartCoroutine(TrapCooldown());
         }
     }
 }
コード例 #8
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     // check if the werewolf is on fire and the trap has not been used.
     if (collision.CompareTag("Enemy") && !bWasUsed)
     {
         // print(collision.name + "");
         Chandelier.simulated = true;
         Chandelier.WakeUp();
         WerewolfAI ai = collision.gameObject.GetComponent <WerewolfAI>();
         if (ai != null)
         {
             //collision.gameObject.GetComponent<WerewolfAI>().newState = WerewolfAI.EWerewolfStates.;
             collision.gameObject.GetComponent <Rigidbody2D>().velocity = new Vector2(0f, 0f);
         }
         bWasUsed = true;
     }
 }
コード例 #9
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        ServantAI  servant  = collision.gameObject.GetComponent <ServantAI>();
        WerewolfAI werewolf = collision.gameObject.GetComponent <WerewolfAI>();

        if (collision.CompareTag("Enemy"))
        {
            werewolf.singleTarget = nextLevelTarget;
            werewolf.levelTarget  = nextLevelTarget;
        }
        else if (collision.CompareTag("Servant"))
        {
            servant.singleTarget = nextLevelTarget;
            servant.levelTarget  = nextLevelTarget;
            servant.AnalyzePatrolArray(nextWaypointTargets);
        }
    }
コード例 #10
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     //Open if not already open.
     if (collision.CompareTag("Enemy"))
     {
         connectedPlatform.gravityScale      = 1;
         GetComponent <Collider2D>().enabled = false;
         connectedPlatform.GetComponent <HingeJoint2D>().useLimits = false;
         WerewolfAI ai = collision.gameObject.GetComponent <WerewolfAI>();
         if (ai != null)
         {
             //collision.gameObject.GetComponent<WerewolfAI>().newState = WerewolfAI.EWerewolfStates.Trapped;
             collision.gameObject.GetComponent <Rigidbody2D>().velocity = new Vector2(0f, 0f);
         }
         StartCoroutine("HangTimer");
     }
 }
コード例 #11
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        ServantAI  servant  = collision.gameObject.GetComponent <ServantAI>();
        WerewolfAI werewolf = collision.gameObject.GetComponent <WerewolfAI>();

        if (collision.CompareTag("Servant"))
        {
            if (servant.CurrentState == ServantAI.EServantStates.Running)
            {
                servant.TakeDamage(servant.HP);
            }
        }
        else if (collision.CompareTag("Enemy"))
        {
            if (werewolf.CurrentState != WerewolfAI.EWerewolfStates.Chasing)
            {
                werewolf.TakeDamage(werewolf.HP);
            }
        }
    }
コード例 #12
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        ServantAI  servant  = collision.gameObject.GetComponent <ServantAI>();
        WerewolfAI werewolf = collision.gameObject.GetComponent <WerewolfAI>();

        if (collision.CompareTag("Enemy"))
        {
            werewolf.transform.position = teleportPoint.position;
            werewolf.singleTarget       = nextLevelTarget;
            werewolf.levelTarget        = nextLevelTarget;
            collision.gameObject.GetComponent <Rigidbody2D>().velocity = new Vector2(collision.gameObject.GetComponent <Rigidbody2D>().velocity.x * -1, collision.gameObject.GetComponent <Rigidbody2D>().velocity.y);
            collision.gameObject.transform.parent.GetComponent <Room>().NPCs.Remove(collision.gameObject);//sometimes object no exist error
        }
        else if (collision.CompareTag("Servant"))
        {
            servant.transform.position = teleportPoint.position;
            servant.singleTarget       = nextLevelTarget;
            servant.levelTarget        = nextLevelTarget;
            servant.AnalyzePatrolArray(nextWaypointTargets);
            collision.gameObject.GetComponent <Rigidbody2D>().velocity = new Vector2(collision.gameObject.GetComponent <Rigidbody2D>().velocity.x * -1, collision.gameObject.GetComponent <Rigidbody2D>().velocity.y);
            collision.gameObject.transform.parent.GetComponent <Room>().NPCs.Remove(collision.gameObject);//sometimes object no exist error
        }
    }