Beispiel #1
0
 protected virtual void Start()
 {
     target         = GameObject.FindGameObjectWithTag("Player").transform;
     enemyCondition = gameObject.GetRequiredComponent <ConditionBehaviour>();
     enemyCondition.ConditionStatChange += OnTakeDamage;
     attackRange = attackSpeed * attackTime + 0.5f;
     base.Awake();
 }
Beispiel #2
0
        protected void OnCollisionStay2D(Collision2D collision)
        {
            ConditionBehaviour cond = collision.gameObject.GetComponent <ConditionBehaviour>();

            if (collision.gameObject.tag != gameObject.tag && cond != null)
            {
                StartCoroutine(Attack(collision.transform.position - transform.position));
            }
        }
        protected virtual void Start()
        {
            playerEnergy    = gameObject.GetRequiredComponent <EnergyBehaviour>();
            playerCondition = gameObject.GetRequiredComponent <ConditionBehaviour>();
            playerEnergy.EnergyStatChange       += OnEnergyChange;
            playerCondition.ConditionStatChange += OnConditionChange;
            save = GameManager.Instance.Save;
            playerEnergy.Energy       = save.SavedPlayerEnergy;
            playerCondition.Condition = save.SavedPlayerCondition;
            attackRange = attackSpeed * attackTime + 0.5f;

            base.Awake();
        }
Beispiel #4
0
        IEnumerator Attack(Vector2 dir)
        {
            if (ActionTimer == 0)
            {
                ActionTimer += attackTime;
                objAnimator.SetTrigger("wilderbotAttack");
                SoundManager.Instance.RandomSFX(enemyAttacks);

                StartCoroutine(MoveOverTime(dir, attackSpeed, attackTime));


                if (dir.x > 0)
                {
                    objRenderer.flipX = false;
                }
                else if (dir.x < 0)
                {
                    objRenderer.flipX = true;
                }

                isAttacking = true;

                objCollider.enabled = false;
                RaycastHit2D[] hits = Physics2D.RaycastAll(transform.position, dir, attackRange);
                objCollider.enabled = true;

                if (!isBeingHit)
                {
                    if (hits.Length > 0)
                    {
                        foreach (RaycastHit2D h in hits)
                        {
                            ConditionBehaviour cond = h.transform.gameObject.GetComponent <ConditionBehaviour>();

                            if (cond != null && cond.Condition > 0)
                            {
                                cond.Condition -= damage;
                            }
                        }
                    }
                }

                yield return(new WaitForSeconds(attackTime));

                isAttacking = false;
            }
        }
Beispiel #5
0
        private void Update()
        {
            RaycastHit2D[] hits = Physics2D.RaycastAll(player.transform.position, Camera.main.ScreenToWorldPoint(Input.mousePosition) - player.transform.position, player.attackRange);
            PlayerHighlightingTarget = false;

            if (hits.Length > 0)
            {
                foreach (RaycastHit2D h in hits)
                {
                    ConditionBehaviour cond = h.transform.gameObject.GetComponent <ConditionBehaviour>();

                    if (cond != null && cond.Condition > 0 && cond.tag != "Player")
                    {
                        PlayerHighlightingTarget = true;
                    }
                }
            }
        }
        IEnumerator AttackAbility()
        {
            objAnimator.SetTrigger("playerChop");
            playerEnergy.Energy -= attackCost;
            ActionTimer         += attackTime;

            Vector2 attackDirection = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;

            StartCoroutine(MoveOverTime(attackDirection, attackSpeed, attackTime));

            if (attackDirection.x > 0)
            {
                objRenderer.flipX = false;
            }
            else if (attackDirection.x < 0)
            {
                objRenderer.flipX = true;
            }

            IsAttacking = true;

            objCollider.enabled = false;
            RaycastHit2D[] hits = Physics2D.RaycastAll(transform.position, attackDirection, attackRange);

            objCollider.enabled = true;

            if (hits.Length > 0)
            {
                foreach (RaycastHit2D h in hits)
                {
                    ConditionBehaviour cond = h.transform.gameObject.GetComponent <ConditionBehaviour>();

                    if (cond != null && cond.Condition > 0)
                    {
                        cond.Condition -= damage;
                    }
                }
            }

            yield return(new WaitForSeconds(attackTime));

            IsAttacking = false;
        }
 // Use this for initialization
 void Awake()
 {
     destructibleRenderer = gameObject.GetRequiredComponent <SpriteRenderer>();
     destructibleCollider = gameObject.GetRequiredComponent <Collider2D>();
     condition            = gameObject.GetRequiredComponent <ConditionBehaviour>();
 }
 // Use this for initialization
 void Awake()
 {
     playerCondition    = GameObject.FindGameObjectWithTag("Player").GetRequiredComponent <ConditionBehaviour>();
     conditionBarText   = GetComponentInChildren <Text>();
     conditionBarSlider = gameObject.GetRequiredComponent <Slider>();
 }