Unity卡牌游戏改变玩家视角

Unity Card Game Change Player Perspective

我是 C# 和 Unity 的新手。我正在尝试制作一个简单的集换式纸牌游戏 (tcg/ccg)。对于第一阶段,我想让它在本地播放,例如。 自己与自己。想知道我们平时是怎么换视角的?

例如:从下图Player1的角度来看,一旦我结束回合并将其传递给Player2,我想让它保持相同的视图但是通过显示Player2的手牌和场地卡(也同时时间隐藏 Player1 的手牌)。

以下只是我的部分代码:

UiController.cs

   [Header("General")]
   [SerializeField] private GameObject BattleCardPrefab;

   [Header("Player Detail")]
   [SerializeField] private GameObject PlayerDeck;
   [SerializeField] private GameObject PlayerHand;

   [Header("Enemy Detail")]
   [SerializeField] private GameObject EnemyDeck;
   [SerializeField] private GameObject EnemyHand;



   private void GetUserObject(int _player)
   {
       UserDeck        = _player == 0 ? PlayerDeck.transform : EnemyDeck.transform;
       UserHand        = _player == 0 ? PlayerHand.transform : EnemyHand.transform;
   }


   public void InitDeck(int _player, List<Card> _deck)
   {
       foreach (var card in _deck)
       {
           GameObject resultCards = Instantiate(BattleCardPrefab, UserDeck);
           resultCards.GetComponent<CardDetail>().card = card;
           resultCards.GetComponent<CardDetail>().ShowCardBack(_player, resultCards, 0);
       }
   }

Player.cs

    public Player(int _playerIndex, string _deckName)
    {
        playerIndex = _playerIndex;
        deckName = _deckName;
    }

     public void GameStartSetUp(string _deckName){
      //initDeck and extra
      //blablabla
     }

BattleManager.cs

    Player player = new Player(0, "testdeck1");
    Player enemy = new Player(1, "testdeck2");

    void Start()
    {
        StartGame();
    }




    public void StartGame()
    {

        player.GameStartSetUp();
        enemy.GameStartSetUp();
    
    }

如果需要我这边的更多信息,请告诉我,怜悯和感谢!

场景设置

创建 2 个空游戏对象,“玩家 1 主视图”和“玩家 2 主视图”。

对两个对象使用以下步骤:

  1. 将您的相机作为对象的父对象,并将相机位置和旋转归零。
  2. 将该对象(相机作为子对象)移动到相机应该在的位置。
  3. 旋转对象,使相机视图看起来正确。
  4. 取消相机父级。
  5. 重复其他视图。

代码

根据代码,我们将相机作为适当的视图对象的父级,并将相机的局部位置和局部旋转归零。

public Camera viewingCamera; // <- assign your camera in inspector
public Transform player1MainView; // <- assign "Player 1 Main View" object in inspector
public Transform player2MainView; // <- assign "Player 2 Main View" object in inspector

public void EnablePlayer1View()
{
    EnableView(player1MainView);

    // Hide player 2 canvas, flip over cards, etc.
    // Show player 1 canvas, show cards, etc.
}
public void EnablePlayer2View()
{
    EnableView(player2MainView);

    // Hide player 1 canvas, flip over cards, etc.
    // Show player 2 canvas, show cards, etc.
}
private void EnableView(Transform viewObject)
{
    viewingCamera.transform.SetParent(viewObject);
    viewingCamera.transform.localPosition = Vector3.zero;
    viewingCamera.transform.localRotation = Quaternion.identity;
}

要将视图切换到“玩家 1”,请调用 EnablePlayer1View()。对于“玩家 2”调用 EnablePlayer2View().