2015-06-29 1 views
0

Я пытаюсь создать создателя, но я получаю механику, закодированную до того, как я на самом деле создаю объект, так как предполагаю, что это будет более легкая часть. До сих пор я создал код, который хорошо работает, но нерестилища сильно искажены до одного из двух соотношений, например, 30: 1 или более. Ложный был сильно искаженный икру.Нерест объекта в разное время и в двух случайных точках

timeLeftUntilSpawn = Time.time - startTime; 
System.Random secondsBetweenSpawn = new System.Random(); 
    float num2 = secondsBetweenSpawn.Next (1, 10); // random number between 1 and 10 'seconds' 
    if (timeLeftUntilSpawn >= num2) { 
     startTime = Time.time; 
     timeLeftUntilSpawn = 0; 
     Debug.Log ("Spawn one here"); 
     System.Random rnd = new System.Random(); // from here is deciding on the position of the spawn after one has been spawned 
     int num = rnd.Next (0, 10); //random number between 0 and 10 
     if (num < 5) { 
      switchSpawning = false; 
      Debug.Log ("False"); 
      transform.position = spawnPosition; 
     } else if (num > 5) { 
      switchSpawning = true; 
      Debug.Log ("True"); 
      transform.position = spawnPosition2; 
     } 
} 

ответ

1

Прежде всего, ваше случайное число - это int ... так что у вас есть только 10 возможных чисел, которые могут быть ... от 0 до 10 как целые числа. Затем вы проверяете, меньше ли 5 ​​или больше 5 ... у вас нет условий, если номер равен ... 5.

Это шанс 1 из 10, что ни одна из них не ударит.

По этой причине вы не должны использовать else if, но вместо этого используйте только else в этой ситуации.

Также нет необходимости искать число от 0 до 10, вы можете просто искать до 1 ... попробуйте это:

System.Random rnd = new System.Random(); // from here is deciding on the position of the spawn after one has been spawned 
    float num = rnd.Range (0, 1); //random number between 0 and 1 
    if (num < .5f) { 
     switchSpawning = false; 
     Debug.Log ("False"); 
     transform.position = spawnPosition; 
    } else { 
     switchSpawning = true; 
     Debug.Log ("True"); 
     transform.position = spawnPosition2; 
    } 
+0

Ах да, спасибо. С помощью float, а не int, что сделает код более эффективным при запуске? – 8673589

+0

не обязательно, но так, как вы его использовали. – maksymiuk

Смежные вопросы