Esempio n. 1
0
    protected override void Attack()
    {
        if (target == null)
        {
            state = UNIT_STATE.IDLE;
            return;
        }

        if (path.Count <= 0)
        {
            ResourceObject item = target.GetComponent <ResourceObject>();
            if (item != null && actionDelayTimer <= 0.0f)
            {
                PlaySFX("NomadStrategyHarvestingMachinery");
                ResourceManager.Instance.AddResource(item.resourceType, item.Gather());
                actionDelayTimer = actionDelayDuration;
            }
            if (target.isDead)
            {
                state = UNIT_STATE.IDLE;
            }
            return;
        }

        Vector3 direction = path.Peek().transform.position + new Vector3(1.25f, 1.25f) - transform.position;

        if (direction.x < 0.0f)
        {
            spriteRenderer.flipX = true;
        }
        else if (direction.x > 0.0f)
        {
            spriteRenderer.flipX = false;
        }
        lastTile = currentTile;
        if (direction.sqrMagnitude < 0.01f)
        {
            currentTile.UnitExitTile(this.gameObject);
            currentTile = path.Peek();
            currentTile.UnitEnterTile(this.gameObject);
            path.Dequeue();
        }

        Vector3 newPosition = transform.position + direction.normalized * moveSpeed * Time.deltaTime;

        transform.position = newPosition;
    }