2016-02-24 4 views
0

Является ли создание модели звездного фона для игры в космический хутар в UNITY3D. В C# i build Создается сборка сборных надписей, которые выглядят как точки. Хотя генерация нескольких точек на случайных пятнах по оси х идеально подходит, я хотел добавить одну вещь.Дайте каждому сборнику свою скорость

Случайная скорость. Проблема в том, что я не знаю, как дать каждому сборнику свою собственную скорость, а не перезаписывать следующую случайную классификацию.

backgroundloop.cs

using UnityEngine; 
using System.Collections; 

public class backgroundloop : MonoBehaviour { 
    public GameObject star; 
    public float spawnTime; 
    private GameObject starPrefab; 
    private float timestamp; 
    //public float hoogte = Random.Range(-1.01f,1.1f); 
    //public float rotationPrefab = transform.localEulerAngles.z; 



    // Use this for initialization 
    void Start() { 


    } 

    // Update is called once per frame 
    void Update() { 
     if (Time.time > timestamp) { 
      starPrefab = Instantiate 
      (star, new Vector3(7,Random.Range(-5.0f,5.0f),0), 
      Quaternion.Euler(0, 0, 0)) as GameObject; 
      timestamp = Time.time + spawnTime; 
      } 
     } 
    } 

И проблема в этом сценарии: prefabMovement.cs

using UnityEngine; 
using System.Collections; 

public class prefabMovement : MonoBehaviour { 
    float speed = Random.Range (-3f, -0.1f); 


    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void Update() { 

     transform.Translate (new Vector3(-1f,0,0) * Time.deltaTime); 
     if (transform.position.x < -6.8) { 
      Destroy (this.gameObject); 
     } 
    } 
} 
+0

Вы можете помещать 'Random.Range' в' void Start() 'метод, так что каждый файл instiatd будет рандомизировать его скорость. –

+0

Пробовал это, но много проблем: имя 'скорость 'не существует в текущем контексте. Наилучшее перегруженное соответствие метода для UnityEngine.Vector3.Vector3 (float, float, float)' имеет некоторые недопустимые аргументы. Аргумент # 1 'не может преобразовать выражение объекта в тип 'float' –

+0

Но нет переменной 'speed', используемой в вашем методе' Update'. И cc вы можете создать переменную 'float speed = 0f;', а в 'Start' просто установите значение как' speed = Random.Range (...); ' –

ответ

0

А? Таким образом, скорость перезаписывается и, в конечном итоге, становится одинаковой на всех экземплярах, созданных в результате инстанцирования?

Возможно, это поможет, если инициализировать переменную скорости внутри метода Start.

+0

Пробовал это, но много проблем: имя 'скорость 'не существует в текущем контексте. Лучшее перегруженное соответствие метода для UnityEngine.Vector3.Vector3 (float, float, float)' имеет некоторые недопустимые аргументы Аргумент # 1 'не может преобразовать выражение объекта в тип' float ' –

+0

Объявить переменную скорости внутри класса 'float speed', Инициализировать переменную скорости внутри' Start() 'method' speed = Random.Range (- 3f, -0.1f); ' Тогда вам нужно использовать переменную скорости где-то – Mtihc