嗨,我正在尝试制作纸牌游戏,我有一个名为hand的类,此hand具有public List<GameObject> cards;
和一个方法:
public void AddCard(GameObject card)
{
cards.Add(card);
GameObject cardObject = Instantiate(card, startPosition, actualCardRotation);
}
public GameObject RemoveCard(GameObject card)
{
cards.Remove(card);
return card;
}
然后我有一个cardGameController属性public Hand playerHand, computerHand;
,该属性具有选择要玩的纸牌并调用RemoveCard函数的功能,但是它在这里不起作用的是代码:
public void SelectCardToPlay()
{
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y);
RaycastHit2D hit = Physics2D.Raycast(mousePos2D, Vector2.zero);
if (hit.collider != null && hit.collider.CompareTag("Card"))
{
Console.text = hit.collider.gameObject.GetComponent<Card>().description;
if (Input.GetMouseButtonDown(0))
{
playedPlayerCard = playerHand.RemoveCard(hit.collider.gameObject);
playerSelectedCardBoard.AddCard(playedPlayerCard, 3);
playedComputerCard = computerHand.PickRandomCard();
computerSelectedCardBoard.AddCard(playedComputerCard, 3);
gameState = 5;
}
}
}
好像我被hit.collider击中的物体与手牌或其他类似东西一样,有任何提示吗?
答案 0 :(得分:1)
在您的AddCard中,您要添加输入卡,我认为这是预制的-因为您使用它来生成新卡。然后,我假设这是您要从列表中删除的这张生成的卡片,因为这可能是您要击中的对象?
只需将您的AddCard更改为:
public void AddCard(GameObject card)
{
GameObject cardObject = Instantiate(card, startPosition, actualCardRotation);
cards.Add(cardObject);
}
看看是否可行。
如果这不是问题,请确保准确调试要获取的所有对象。在这里和那里添加一些Debug.Log(gameObject.name);
。