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 主视图”。
对两个对象使用以下步骤:
- 将您的相机作为对象的父对象,并将相机位置和旋转归零。
- 将该对象(相机作为子对象)移动到相机应该在的位置。
- 旋转对象,使相机视图看起来正确。
- 取消相机父级。
- 重复其他视图。
代码
根据代码,我们将相机作为适当的视图对象的父级,并将相机的局部位置和局部旋转归零。
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()
.
我是 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 主视图”。
对两个对象使用以下步骤:
- 将您的相机作为对象的父对象,并将相机位置和旋转归零。
- 将该对象(相机作为子对象)移动到相机应该在的位置。
- 旋转对象,使相机视图看起来正确。
- 取消相机父级。
- 重复其他视图。
代码
根据代码,我们将相机作为适当的视图对象的父级,并将相机的局部位置和局部旋转归零。
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()
.