示例#1
0
 protected override void Start()
 {
     base.Start();
     rayShooter       = GetComponent <RayShooter>();
     forceApplier     = GetComponent <ForceApplier>();
     damageCalculator = GetComponent <DamageCalculator>();
 }
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        //REFERENCIAS
        enemy        = animator.gameObject.GetComponentInParent <MELEE_enemy>();
        target       = enemy.target;
        forceApplier = animator.gameObject.GetComponentInParent <ForceApplier>();

        //-ATTACK SETUP-
        enemy.transform.LookAt(target.transform.position);
        //Ignora la colisión entre el enemigo y el objetivo del ataque para que no obstaculice la embestida
        Physics.IgnoreCollision(target.GetComponent <CharacterController>(), enemy.GetComponent <CharacterController>(), true);
        //Acto seguido, activa el trigger que es el que se encargará de gestionar si el ataque ha golpeado, su daño, knockback, etc.
        enemy.attackCollider.enabled = true;
        //Y finalmente reemplazamos el daño 'default' por el daño de este ataque en concreto.
        enemy.damage       = attackDamage;
        enemy.isVulnerable = false;


        //-ATTACK ACTION-
        //Una vez se han establecido las condiciones para el ataque, se impulsa al enemigo en dirección a su objetivo, con una fuerza igual a 'attackImpulse'
        forceApplier.AddImpact(new Vector3(enemy.transform.forward.x, 0, enemy.transform.forward.z), attackImpulse);

        if (enemy.weapon != null)
        {
            enemy.weapon.GetComponentInChildren <EnemyMeleeWeapon>().damage = attackDamage;
            enemy.weapon.transform.LookAt(target.transform.position);
            enemy.weapon.GetComponentInChildren <Animator>().SetTrigger("Attack"); //ESTO ESTA FEO Y HAY QUE HACERLO MAS BONITO
        }
    }
示例#3
0
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        //REFERENCIAS
        enemy        = animator.gameObject.GetComponentInParent <RANGED_enemy>();
        target       = enemy.target;
        forceApplier = animator.gameObject.GetComponentInParent <ForceApplier>();

        enemy.transform.LookAt(target.transform.position);
        enemy.isVulnerable = false;

        //-ATTACK SETUP-
        //Ignora la colisión entre el enemigo y el objetivo del ataque para que no obstaculice la embestida
        Physics.IgnoreCollision(target.GetComponent <CharacterController>(), enemy.GetComponent <CharacterController>(), true);
        //Acto seguido, activa el trigger que es el que se encargará de gestionar si el ataque ha golpeado, su daño, knockback, etc.
        //enemy.attackCollider.enabled = true;
        //Y finalmente reemplazamos el daño 'default' por el daño de este ataque en concreto.
        enemy.damage = attackDamage;

        //-ATTACK ACTION-
        Instantiate(enemy.projectile, new Vector3(enemy.transform.position.x, enemy.transform.position.y + 1.2f, enemy.transform.position.z), enemy.transform.rotation);
        //Una vez se han establecido las condiciones para el ataque, se impulsa al enemigo en dirección a su objetivo, con una fuerza igual a 'attackImpulse'
        Vector3 attackDir = (target.transform.position - enemy.transform.position).normalized;

        forceApplier.AddImpact(new Vector3(-attackDir.x, 0, -attackDir.z), recoilImpulse);
    }
示例#4
0
    // Start is called before the first frame update
    void Start()
    {
        currentHealth = stats.health;
        isVulnerable  = true;
        agent         = GetComponent <NavMeshAgent>();
        controller    = GetComponent <CharacterController>();
        target        = GameObject.FindGameObjectWithTag("Player");
        forceApplier  = GetComponent <ForceApplier>();
        canAttack     = true;
        canDamage     = true;
        isAlive       = true;


        willpower = 0;

        addedToList = false;

        if (isPatrolling)
        {
            nextSpot = 0;
            agent.SetDestination(patrolSpots[0].position);
        }
        initializeStatsWidget();
        statsWidget.SetActive(false);
    }
示例#5
0
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        //REFERENCIAS
        enemy        = animator.gameObject.GetComponentInParent <RANGED_enemy>();
        target       = enemy.target;
        forceApplier = animator.gameObject.GetComponentInParent <ForceApplier>();

        enemy.transform.LookAt(target.transform.position); //Mira a su objetivo

        //-ATTACK ACTION-
        GameObject animaKiller = Instantiate(animaKillerPrefab, new Vector3(enemy.transform.position.x, enemy.transform.position.y + 1.2f, enemy.transform.position.z), enemy.transform.rotation);

        animaKiller.GetComponent <ProjectileController>().target = target.transform;
        //Una vez se han establecido las condiciones para el ataque, se impulsa al enemigo en dirección a su objetivo, con una fuerza igual a 'attackImpulse'
        Vector3 attackDir = (target.transform.position - enemy.transform.position).normalized;

        forceApplier.AddImpact(new Vector3(-attackDir.x, 0, -attackDir.z), recoilImpulse);
    }
示例#6
0
    void Update()
    {
        if (Input.GetKeyDown(PunchButton))
        {
            ForceBarUpdator.Instance.Stop();

            if (forceMagnitude <= 0)
            {
                return;
            }

            ForceApplier.GetForceFromInputRegister(forceMagnitude);
            Reset();
        }
        else if (Input.GetKeyDown(RestartButton))
        {
            OnReset.Invoke();
        }
    }
示例#7
0
    protected override void Start()
    {
        base.Start();
        ammo       = GetComponent <Ammo>();
        rayShooter = GetComponent <RayShooter>();
        if (dealDamage)
        {
            forceApplier     = GetComponent <ForceApplier>();
            damageCalculator = GetComponent <DamageCalculator>();

            if (forceApplier == null)
            {
                forceApplier = gameObject.AddComponent <ForceApplier>();
            }

            if (damageCalculator == null)
            {
                damageCalculator = gameObject.AddComponent <DamageCalculator>();
            }
        }
        _angle = Quaternion.AngleAxis(verticalAngle, Vector3.left);
    }
示例#8
0
    private void Start()
    {
        movementController = GetComponent <MovementController>();
        playerTransform    = GetComponent <Transform>();
        forceApplier       = GetComponent <ForceApplier>();
        playerInput        = GetComponent <PlayerInput>();
        healthBar          = FindObjectOfType <HealthBarController>();
        enemyHPBar         = FindObjectOfType <EnemyHealthBar>();
        enemyWPBar         = FindObjectOfType <EnemyWillPowerBar>();
        concentrationBar   = FindObjectOfType <ConcentrationBarController>();
        concentrationBar.setMaxConcentation(maxConcentration);
        willpowerBar = FindObjectOfType <WillpowerBar>();
        willpowerBar.setMaxWillpower(maxWillPower);
        //willpower = maxWillPower;

        noOfTaps      = 0;
        concentration = maxConcentration;
        canAttack     = true;
        isVulnerable  = true;
        isBlocking    = false;
        health        = maxHealth;
        healthBar.setMaxHealth(maxHealth);
    }
示例#9
0
 private void Awake()
 {
     instance = this;
 }