コード例 #1
0
    public void AddSlotPiece(TankPiece piece)
    {
        tankSlot.Piece = piece;

        piece.CancelGravity();
        piece.colliderInProps.enabled = false;
        piece.rigidbody.bodyType      = RigidbodyType2D.Kinematic;

        piece.transform.SetParent(transform);
        piece.transform.localPosition = Vector3.zero;
        piece.transform.localScale    = Vector3.one;
        piece.transform.localRotation = Quaternion.identity;


        tankSlot.IsFilled = true;
    }
コード例 #2
0
    public void DestroySlot()
    {
        if (tankSlot.Piece != null)
        {
            TankPiece piece = tankSlot.Piece;
            piece.EnableGravity();
            piece.colliderInProps.enabled = true;

            piece.rigidbody.bodyType = RigidbodyType2D.Dynamic;

            var     rndX = Random.Range(0.8f, 1f);
            var     rndY = Random.Range(0.8f, 1f);
            Vector3 variatingDirection = new Vector3(piece.team == Team.Blue ? rndX * -1 : rndX, rndY);

            piece.ThrowProp(variatingDirection, null);

            tankSlot.Piece    = null;
            tankSlot.IsFilled = false;
        }
    }
コード例 #3
0
    private void ExecuteAddPiece(PlayerController playerController)
    {
        TankPiece piece = playerController.holdingProp as TankPiece;

        for (int i = 0; i < tankController.TankSlots.Count; i++)
        {
            var slot = tankController.TankSlots[i];
            if (slot.Id == piece.Id && team == piece.team)
            {
                TankSlotsGraphics[i].AddSlotPiece(piece);
                playerController.holdingProp = null;
            }
        }

        if (tankController.isRepaired)
        {
            canShoot = true;
        }

        SoundManager.Instance.StopSFX("sfx_tank_repair");
    }