Здравствуйте. Хочу написать скрипт, что один и тот же объект генерировался примерно каждую секунду рандомно + чтобы появлялся он на высоте -6.27 и достигал 2.24 и пропадал и ещё к этому же не заходил границы появления X -8.78 и X 8.78. Поможете?
void FooThatStartsEverySecond(GameObject gameObject) { Random rand = new Random(); // объявляем новый рандом Vector3 position = ((rand.NextDouble * 8.78) - 8.78, -6.27, putHereZCoord); // генерируем координаты: /** x: rand.NextDouble возвращает случайное число от 0 до 1.0, потому имеем диапазон от [-8.78; +8.78] ** y: -6.27 ** z: в putHereZCoord напишешь необходимую Z координату **/ Quaternion rotation; //Здесь создай кватернион для поворота объекта Instantiate(gameObject, position, rotation); // создаем сам объект на сцене по нужным координатам и повороту
Конечно не будет работать как задумано. Translate мгновенно передвинет объект в нужную позицию, а не постепенно. Посмотрите мои уроки - там есть перемещение... https://www.youtube.com/playlis....v3Br4TM
Translate мгновенно передвинет объект в нужную позицию
Пардон, не заморочился по этому поводу, поставил первую функцию из гугла по запросу "move object unity" Тогда можно соединить с этим и всё будет норм Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
Здравствуйте ещё раз. Я ещё забыл упомянуть то, что у меня 2D игра. И ещё у меня ед. ошибка в вашем скрипте /Scripts/Spawn.cs(9,68): error CS1026: Unexpected symbol `,', expecting `)' Выше прочитал то, что скрипт недоработан и вы мне дали ссылку. Не подскажите как скрепить ваш скрипт с
Так не получится. У Вас три альтернативы. 1. Ждать когда кто-то напишет Вам полный рабочий скрипт. Тут народу мало. Вряд ли кто-то это сделает в обозримом будущем. 2. Научиться самому писать скрипты. Для этого недостаточно посмотреть один урок. Нужно учиться. 3. Найти скриптера на Ваш проект, который займется программированием.
//лень удалять // Update вызывается каждый кадр //И здесь творится магия спавна!!! void SpawnYourFckingObject() { // Создаем позицию Vector3 position = new Vector3((Random.Range(-1f, 1f) * 8.78f), -6.27f, 0); //Я вместо всяких ваших nextDouble лучше заюзаю старый добрый Range
// Используйте для инициализации void Start () { }
// Update вызывается каждый кадр void Update () { //перемещаем наш обьект на 2.24 м transform.position = Vector3.MoveTowards(transform.position, new Vector3(transform.position.x, 2.24f, transform.position.z), speed * Time.deltaTime); //и когда обьект достиг этой позиции if (transform.position.y == 2.24f) { //то удаляем его к хренам!!! Destroy(gameObject); }
Ничего не придумал получше, как написать два скрипта Все нормально работает, код прокомментирован
SpawnBox вешаем на любой обьект
MoveBox вешаем на обьект, который спавним
Большое спасибо! Благодарен вам очень. Заметил ошибку, что сам прототип объекта тоже перемещается и после того как он достигнет высоты удаления, то спавн прекращается и выдает ошибку. Если интересно, то вот:
MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.Object.Internal_InstantiateSingle (UnityEngine.Object data, Vector3 pos, Quaternion rot) (at C:/buildslave/unity/build/artifacts/EditorGenerated/UnityEngineObject.cs:74) UnityEngine.Object.Instantiate (UnityEngine.Object original, Vector3 position, Quaternion rotation) (at C:/buildslave/unity/build/artifacts/EditorGenerated/UnityEngineObject.cs:84) SpawnBox.SpawnYourFckingObject () (at Assets/Scripts/SpawnBox.cs:24)
и с самого начала спавнит сразу два обьекта
Сообщение отредактировал AlexCreate - Ср, 01 Июл 2015, 17:06
Заметил ошибку, что сам прототип объекта тоже перемещается и после того как он достигнет высоты удаления, то спавн прекращается и выдает ошибку. Если интересно, то вот:
ОБОЖИ!. Обьект который собираешься спавнить надо сделать префабом и назначать префаб
Добавлено (09 Июл 2015, 17:31) --------------------------------------------- Хотя бы спасибо сказал