所以我正在做一个老虎机游戏,但是我检查获胜组合的方法不起作用,我不知道该尝试什么。
我设法通过使用ienumerator将符号创建为卷轴游戏对象下的子对象来显示符号
IEnumerator SpinReel(int reelIndex)
{
// spin for a random amount of time
float spinTime = Random.Range(1.5f, 3.0f);
yield return new WaitForSeconds(spinTime);
// choose a random symbol
int symbolIndex = Random.Range(0, 5);
GameObject symbol;
switch (symbolIndex)
{
case 0:
symbol = cherryPrefab;
break;
case 1:
symbol = grapePrefab;
break;
case 2:
symbol = sevenPrefab;
break;
case 3:
symbol = orangePrefab;
break;
case 4:
symbol = lemonPrefab;
break;
default:
symbol = cherryPrefab;
break;
}
//instantiate symbol on reel
GameObject newSymbol = Instantiate(symbol, reels[reelIndex].transform);
newSymbol.transform.localPosition = Vector3.zero;
// wait for another 1.5 seconds before starting to spin the 2nd reel
yield return new WaitForSeconds(1.5f);
这是我目前检查组合的方法,但它不想工作:
void Check()
{
if (reels[2].transform.GetChild(0) == reels[1].transform.GetChild(0) &&
reels[1].transform.GetChild(1) == reels[0].transform.GetChild(0))
{
Debug.Log("yee");
currency += bet * 2;
Debug.Log(currency);
}
else if (reels[2].transform.GetChild(0) == reels[1].transform.GetChild(0) ||
reels[1].transform.GetChild(1) == reels[0].transform.GetChild(0))
{
Debug.Log("yee");
// player wins, add winnings to currency
currency += bet;
Debug.Log(currency);
}
}
你知道为什么它不起作用或其他方法,我可以尝试?
用C#统一编写
1条答案
按热度按时间4zcjmb1e1#
你的代码对我来说有一点不清楚。你能展示一下你运行它得到的输出吗?
我也知道你有3个卷轴,但是如果我没记错的话,你应该只从每个卷轴中示例化一个符号,那么在你的Check函数中,为什么你要比较卷轴[1]的第二个孩子和卷轴[0]的第一个孩子呢?
getChild方法也返回子对象的transform组件,你不应该比较符号吗?例如,通过获取GameObjects并比较符号属性(如果你有一个)
这样,Check方法将如下所示:
最后,如果这不能解决你的问题,你能展示一下你是如何调用SpinReel函数的吗?当你在最后调用WaitForSeconds(1.5f)时,我不知道它是如何等待下一个卷轴开始旋转的。