私は4色あります。プレイヤーが同じ色に2回連続していられないようにしたい。プレイヤーがオブジェクトに衝突すると、RandomColor()
が呼び出されます。そのため、この関数はゲーム中に何度も呼び出され、プレーヤーが色を変更しないことがあります。毎回乱数を生成し、最後の数字を含まない
using UnityEngine;
public class ColorManager : MonoBehaviour {
public SpriteRenderer player;
public string playerColor;
public Color[] colors = new Color[4];
private void Awake()
{
RandomColor();
}
public void RandomColor()
{
int index = Random.Range(0, 4);
switch (index)
{
case 0:
player.color = colors[0]; //colors[0] is orange
playerColor = "orange";
break;
case 1:
player.color = colors[1]; //colors[1] is pink
playerColor = "pink";
break;
case 2:
player.color = colors[2]; //colors[2] is blue
playerColor = "blue";
break;
case 3:
player.color = colors[3]; //colors[3] is purple
playerColor = "purple";
break;
}
}
}
はdo-while文、whileループ使用してみましたが、私は時々2回連続で同じ色を受けるので、私は明らかに、それは間違ってやっています。もし誰かがそれを見つけ出し、それがどのように働いているのかを説明するのはすばらしいことです。なぜなら私はこの問題について大きな時間を費やしていて、とても興味があります。
youzには4色あり、新しい色を選択すると、プレーヤーの色が現在の色と異なるまでランダムに再調整されます。 –
より良いテクニック:現在有効な色のみを含むコレクションを作成し、そのコレクションからランダムな要素を選択します。不変なコレクションを使用すると役に立ちます。 –