private void TriggerAttack()
    {
        var mousePos        = Input.mousePosition;
        var direction       = MousePosition.GetMouseWorldPosition(mousePos, mainCamera);
        var attackDirection = (transform.position - direction).normalized;
        var angle           = Mathf.Atan2(attackDirection.y, attackDirection.x) * Mathf.Rad2Deg;

        if ((angle < -135 && angle > -180) || (angle > 135 && angle < 180))
        {
            animator.SetTrigger("Attack_S");
            currentAttackPoint         = attackPoints[0];
            rendererTransform.rotation = new Quaternion(0, 0, 0, 0);
        }
        else if (angle > -45 && angle < 45)
        {
            animator.SetTrigger("Attack_S");
            currentAttackPoint         = attackPoints[1];
            rendererTransform.rotation = new Quaternion(0, 180, 0, 0);
        }
        else if (angle < -45 && angle > -135)
        {
            currentAttackPoint = attackPoints[2];
            animator.SetTrigger("Attack_U");
        }
        else if (angle > 45 && angle < 135)
        {
            currentAttackPoint = attackPoints[3];
            animator.SetTrigger("Attack_D");
        }
    }
    private void HandleAim()
    {
        var mousePos = MousePosition.GetMouseWorldPosition(Input.mousePosition, Camera.main);

        var aimDirection = (mousePos - transform.position).normalized;
        var angle        = Mathf.Atan2(aimDirection.y, aimDirection.x) * Mathf.Rad2Deg;

        aimTransform.eulerAngles = new Vector3(0, 0, angle);

        var localScale = new Vector3(0.5f, 0.5f, 1f);

        if (angle > 90 || angle < -90)
        {
            gameObject.transform.rotation = new Quaternion(0, 180, 0, 0);
            localScale.y = -0.5f;
        }

        else
        {
            gameObject.transform.rotation = new Quaternion(0, 0, 0, 0);
            localScale.y = 0.5f;
        }

        aimTransform.localScale = localScale;
    }
Example #3
0
    public override void UseSpell()
    {
        timer += Time.deltaTime;


        if (Input.GetButton("Fire1") && Player.energy > energyCost)
        {
            if (timer > 0.5f)
            {
                timer = 0;
            }
            else
            {
                return;
            }

            Player.energy -= energyCost;

            Destroy(Instantiate(particleSystem, transform.position, Quaternion.Euler(0, 0, Player.rotationZ)).gameObject, 3f);

            Vector3 mousePos     = MousePosition.GetMouseWorldPosition();
            Vector3 aimDirection = (mousePos - transform.position).normalized;


            RaycastHit2D hit = Physics2D.Raycast(transform.position, aimDirection, 15f);

            Debug.Log(hit.collider);

            ApplyDamage(hit.collider);


            Destroy(Instantiate(GameLogic.Instance.expolionPaticles, hit.collider.transform.position, Quaternion.identity), 0.5f);
        }
    }
Example #4
0
    private void SpriteArmRotate()
    {
        Vector3 mousePos     = MousePosition.GetMouseWorldPosition();
        Vector3 aimDirection = (mousePos - transform.position).normalized;

        RaycastHit2D hit = Physics2D.Raycast(transform.position, aimDirection);

        float angle = Mathf.Atan2(aimDirection.y, aimDirection.x) * Mathf.Rad2Deg;

        rotationZ = angle;
        _armSprite.transform.eulerAngles = new Vector3(0, 0, angle + 90);
    }
Example #5
0
    public override void UseSpell()
    {
        timer += Time.deltaTime;
        if (Input.GetKeyDown(KeyCode.Mouse0) && Player.energy > energyCost)
        {
            Player.energy -= energyCost;
            if (timer <= 0.33)
            {
                return;
            }
            else
            {
                timer = 0;
            }

            GameObject currentProjectile = Instantiate(projectile, transform.position, Quaternion.identity);

            Vector3 mousePos     = MousePosition.GetMouseWorldPosition();
            Vector3 aimDirection = (mousePos - transform.position).normalized;

            currentProjectile.GetComponent <Rigidbody2D>().AddForce(aimDirection * 40, ForceMode2D.Impulse);
        }
    }
    private IEnumerator ShootWeapon(float offset = 0, int index = 0)
    {
        animator.SetTrigger("Shoot");

        var mousePos  = Input.mousePosition;
        var direction = MousePosition.GetMouseWorldPosition(mousePos, Camera.main);// - transform.position;

        direction = new Vector3(direction.x, direction.y + offset);

        var ray = Physics2D.Linecast(gunTip.position, direction, enemyLayerMask);

        //Draw shot
        //Debug.DrawRay(gunTip.position, direction, Color.red, 20f);
        //Debug.Log(direction);
        lineRenderers[index].SetPosition(0, gunTip.position);

        if (ray.collider != null)
        {
            var hitEnemy        = ray.collider.gameObject;
            var enemyController = hitEnemy.GetComponent <HealthController>();
            enemyController.TakeDamage(1);

            var effect = Instantiate(impactEffect, ray.point, new Quaternion());
            effect.transform.SetParent(hitEnemy.transform);
            lineRenderers[index].SetPosition(1, effect.transform.position);
        }
        else
        {
            lineRenderers[index].SetPosition(1, direction);
        }

        lineRenderers[index].gameObject.SetActive(true);
        yield return(new WaitForSeconds(0.02f));

        lineRenderers[index].gameObject.SetActive(false);
    }