コード例 #1
0
    private Vector2?FindAttackDestination()
    {
        OnAttackStart?.Invoke();
        _spriteRenderer.color = Color.yellow;

        var directionToPlayer    = (_player.transform.position - transform.position).normalized;
        var projectedDestination = _player.transform.position + directionToPlayer * 10f;

        _attackDestination = BoundaryHelper.PointBeforeCollisionWithBoundaryWithBuffer(transform.position, projectedDestination, 2f);

        return(_attackDestination);
    }
コード例 #2
0
    /// <summary>
    /// Корутина анимации атаки
    /// </summary>
    /// <returns></returns>
    IEnumerator Attack(Collider weaponCollider)
    {
        isAttackCoRunning = true;                                // флажок запущенной корутины включен
        UpdateAnimationIndex(true);                              // установка индекса анимации по умолчанию

        while (isAttackInQueue)                                  // проверка счётчика очереди атак
        {
            OnAttackStart?.Invoke();                             // вызов события начала атаки
            animator.SetTrigger(attackAnimList[animationIndex]); // запуск анимации атаки
            isAttackInQueue = false;                             // сброс флажка очереди атак
            yield return(new WaitForSeconds(AttackFrequency));   // ожидание окончания анимации

            UpdateAnimationIndex();                              // обновление индекса анимации
            OnAttackStop?.Invoke();                              // вызов события конца атаки
        }

        isAttackCoRunning = false;      // флажок запущенной корутины отключен
    }
コード例 #3
0
 public void AttackStart()
 {
     OnAttackStart?.Invoke();
 }
コード例 #4
0
 /// <summary>
 /// Invoke an attack with the current equipped weapon
 /// </summary>
 /// <param name="weapon">Current weapon</param>
 public void InvokeAttackStart(Weapon weapon) => OnAttackStart?.Invoke(weapon);