Я запрограммировал небольшой клон-клон. В начале мяч появляется в середине поля.Unity Random Range не работает должным образом
Ожидаемый результат: Я хочу, чтобы мяч лететь в 45 градусов к верхней правой и левой, и правой нижней и левой случайно.
Реальный выход: Мяч находится только в правом верхнем и нижнем левом углу.
Код:
public class BallController : MonoBehaviour {
public float speed;
private Rigidbody2D rb2d;
private int counter;
void Start() {
rb2d = GetComponent<Rigidbody2D>();
SetStartPosition();
}
public void SetStartPosition() {
this.transform.position = new Vector3 (395f, 295f, 0f);
int xVector = GetRandom();
int yVector = GetRandom();
float x = (float) xVector;
float y = (float) yVector;
Vector2 movement = new Vector2 (x, y);
rb2d.velocity = movement * speed;
}
private int GetRandom() {
int i = 0;
do {
Random.InitState((int) System.DateTime.Now.Ticks);
i = Random.Range (-1, 2);
} while (i == 0);
return i;
}
}
Уверены ли вы? Я попробовал код и получил все возможные значения. Вы можете выполнить легкий тест с помощью (int i = 0; i <100; i ++) {print (GetRandom() + "" + GetRandom());} в Start. И вам не нужен Random.InitState ((int) System.DateTime.Now.Ticks), который используется для установки семени, и вы обычно устанавливаете его один раз, если хотите каждый раз получать одинаковый результат. –
Подождите, я нашел проблему. Это был Random.InitState ((int) System.DateTime.Now.Ticks) –