Exemple #1
0
    protected override void Attack()
    {
        Vector3 diffVector = cursorLogic.ReturnPlayer2Cursor();
        float   angle      = Mathf.Atan2(diffVector.x, diffVector.z);
        Vector3 anglesDeg  = new Vector3(0f, angle * Mathf.Rad2Deg, 0f);

        Vector3 mod_transform = new Vector3(transform.position.x + (distance * Mathf.Sin(angle)), transform.position.y, transform.position.z + (distance * Mathf.Cos(angle)));

        GameObject       clone     = Instantiate(ProjectileShield, mod_transform, Quaternion.Euler(anglesDeg), PlayerProjectiles).gameObject;
        ProjectileShield PS_Script = clone.GetComponentInChildren <ProjectileShield>();

        PS_Script.Setup(max_duration, (int)(health * AbilityEffectMult()), true, activePerks.ProjShieldReflection());
    }
    [SerializeField] private float CastAmount       = 1;   //should not move the transform because that affect LoS

    public override bool CastMechanics()
    {
        if (!clean_LoS())
        {
            return(false);
        }

        Vector3 target_dir = ETM.Return_Current_Target().transform.position - transform.position;
        float   angle      = Mathf.Atan2(target_dir.x, target_dir.z);
        Vector3 anglesDeg  = new Vector3(0f, angle * Mathf.Rad2Deg, 0f);

        for (int i = 1; i < CastAmount + 1; i++)
        {
            Vector3          mod_transform = new Vector3(transform.position.x + (cast_distance * i * Mathf.Sin(angle)), transform.position.y + placement_y_bias, transform.position.z + (cast_distance * i * Mathf.Cos(angle)));
            GameObject       clone         = Instantiate(ProjectileShield, mod_transform, Quaternion.Euler(anglesDeg), EnemyProjectiles).gameObject;
            ProjectileShield PS_Script     = clone.GetComponent <ProjectileShield>();

            PS_Script.Setup(max_duration, health, false, false);
        }
        return(true);
    }