Пример #1
0
        internal void TryDig(DigDirection direction)
        {
            Vector3 position = GetDigPosition(direction);

            WorldTile tileToDig = gameTiles.GetTileAt(position);

            if (tileToDig != null && tileToDig.Ore.Data != null && tileToDig.Ore.Data.ore != Ore.BedRock)
            {
                if (tileToDig.TilemapMember.GetTile(tileToDig.LocalPlace) == null)
                {
                    return;
                }

                if (!digParticles.isPlaying)
                {
                    digParticles.Play();
                }

                RotateDigParticles(direction);
                tileToDig.Durability -= Time.deltaTime * DigSpeed * GetTierMultiplier();
                playerEnergy.DecreaseEnergy(Time.deltaTime);
                if (tileToDig.Durability <= 0)
                {
                    Debug.Log("Mined " + tileToDig.Ore.Data.ore.ToString());
                    playerResources.AddOre(tileToDig.Ore.Data.ore);
                    gameTiles.RemoveTile(tileToDig);
                    soundManager.PlaySfx("Destroy", 0.65f);
                }
            }
            else if (digParticles.isPlaying)
            {
                digParticles.Stop();
            }
        }
Пример #2
0
    private bool CanDig(DigDirection direction)
    {
        if (!isGrounded)
        {
            return(false);
        }

        //Check Timer
        Vector2 raycastDirection = Vector2.zero;

        switch (direction)
        {
        case DigDirection.Left:
            raycastDirection = Vector2.left;
            break;

        case DigDirection.Right:
            raycastDirection = Vector2.right;
            break;

        case DigDirection.Down:
            raycastDirection = Vector2.down;
            break;
        }

        bool canDig = Physics2D.Raycast(transform.position, raycastDirection, groundCheckDistance, groundLayerMask);

        return(canDig);
    }
Пример #3
0
    void Dig(DigDirection direction)
    {
        Vector3 positionForCell = transform.position;

        if (direction == DigDirection.Left)
        {
            positionForCell += Vector3.left * 10;
        }

        if (direction == DigDirection.Right)
        {
            positionForCell += Vector3.right * 10;
        }

        Vector3Int currentCellPosition = GetCellPosition(positionForCell, direction);

        TileBase tileBelowPlayer = tilemap.GetTile(currentCellPosition);

        if (tileBelowPlayer != null)
        {
            // Before we delete the tile, get the correct money reward
            GetMoney(currentCellPosition);
            tilemap.SetTile(currentCellPosition, null);
        }
    }
Пример #4
0
    // The tilemap is rotated 180 degrees to make math easy
    // So we have to adjust tile position
    Vector3Int GetCellPosition(Vector3 position, DigDirection direction)
    {
        Vector3Int cellPos = tilemap.WorldToCell(position);

        if (direction == DigDirection.Down)
        {
            cellPos.y += 1;
        }
        return(cellPos);
    }
Пример #5
0
        private void RotateDigParticles(DigDirection direction)
        {
            float z = 0;

            switch (direction)
            {
            case DigDirection.Up:   z = -90f; break;

            case DigDirection.Down: z = 90f; break;
            }

            digParticlePivot.localRotation = Quaternion.Euler(0, 0, z);
        }
Пример #6
0
        private Vector3 GetDigPosition(DigDirection direction)
        {
            switch (direction)
            {
            case DigDirection.Up: return(transform.position + Vector3.up);

            case DigDirection.Down: return(transform.position + Vector3.down);

            case DigDirection.Left: return(transform.position + Vector3.left);

            case DigDirection.Right: return(transform.position + Vector3.right);

            default: return(transform.position + Vector3.up);
            }
        }