в Start написал вот этот код if (i == 0) { GameObject obj = Instantiate(Obj1, new Vector3(Random.Range(17, 8), 7, 0), Quaternion.identity) as GameObject; } if (i == 1) { GameObject obj = Instantiate(Obj1, new Vector3(Random.Range(17, 8), 7, 0), Quaternion.identity) as GameObject; } если i==0 то создается один объект, если меняю 0 на 1 , то второй объект не создается . Подскажите , как сделать так, чтобы при i = 1 создавался второй объект? Добавил этот код в Update , но создаются слишком много .
в Start написал вот этот код if (i == 0) { GameObject obj = Instantiate(Obj1, new Vector3(Random.Range(17, 8), 7, 0), Quaternion.identity) as GameObject; } if (i == 1) { GameObject obj = Instantiate(Obj1, new Vector3(Random.Range(17, 8), 7, 0), Quaternion.identity) as GameObject; } если i==0 то создается один объект, если меняю 0 на 1 , то второй объект не создается . Подскажите , как сделать так, чтобы при i = 1 создавался второй объект? Добавил этот код в Update , но создаются слишком много .
Ну так у тебя создается один и тот же обьект ведь в Instantiate(Obj1) и там и там
Ну так у тебя создается один и тот же объект ведь в Instantiate(Obj1) и там и там
Да, но мне надо , чтобы создавались одни и те же объекты , ну чтобы клонировались. То есть, если i==1 , создается один объект, а если i==2 , то 2 объекта чтобы было на сцене.
Ну так Start срабатывает один раз при старте игры.
Код
if (i == 0) { GameObject obj = Instantiate(Obj1, new Vector3(Random.Range(17, 8), 7, 0), Quaternion.identity) as GameObject; } else if (i == 1) { GameObject obj = Instantiate(Obj1, new Vector3(Random.Range(17, 8), 7, 0), Quaternion.identity) as GameObject; GameObject obj2 = Instantiate(Obj1, new Vector3(Random.Range(17, 8), 7, 0), Quaternion.identity) as GameObject; }
Не проверял, как ведёт себя Random.Range, когда min > max, но, к примеру, Random.Next выбрасывает исключение ArgumentOutOfRangeException. Видимо, Random.Range рабоатет по-другому.
Сообщение отредактировал 8Observer8 - Понедельник, 01 Февраля 2016, 11:26
Ну так Start срабатывает один раз при старте игры.
При столкновении с этим объектом у меня i меняется на i+1 . То есть, в начале i==0, сталкиваешься с объектом , i==1 . Если i==1 , то появляется еще один объект . То есть i меняется походу игры. Поэтому, наверное, в методе Start не работал этот код В Update как нибудь написал вот такой код, пока все работает как мне надо. -------------------------------------------------------------------------------------------------
Код
if (i == 0) { GameObject obj = Instantiate(Obj1, new Vector3(Random.Range(5, 18), 7, 0), Quaternion.identity) as GameObject; } i=3; if (i == 4) { GameObject obj = Instantiate(Obj1, new Vector3(Random.Range(17, 8), 7, 0), Quaternion.identity) as GameObject; } i=5;
void OnCollisionEnter2D(Collision2D tgObj) { if (tgObj.gameObject.tag == "tgObj") {
gam.GetComponent<ScripstInst>().i += 1;
Destroy(GameObject.FindWithTag("tgObj"));
}
Спасибо
Сообщение отредактировал STRATEG766 - Понедельник, 01 Февраля 2016, 14:32
как сделать что бы объект при передвижении не толкал другие, но и через них не проходил?
Самое простое - поставить "другим" Is Kinematic (в совокупности с мешем, разумеется). Ну или кодом назначать им этот параметр при столкновении\ приближении необходимого объекта, а потом снимать при его отдалении\прошествии заданного промежутка времени. #Хийвэл бүү ай, айвал бүү хий.
Народ, подскажите пожалуйста, а что за "идиотизм", простите, с колесиком мыши в окне редактора? Случайно (да и по привычке иногда) крутнул пару раз и все, при приближении к объектам и террейну они пропадают еще до того, как камера к ним приблизится. Приходится потом через Revert Factory Settings сбрасывать. Можно как нибудь эту приблуду отключить?