Не работает строчка массива Transform [РЕШЕНО]
| |
serezha | Дата: Вторник, 07 Декабря 2021, 19:03 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Вот что сделал: public Transform[] arrayOfSpawnPoints, заполнил тремя GO пустышками в инспекторе. В public GameObject PlayerKubik перетащил GO куб в инспекторе. Для строки спавна в целях эксперемента назначил клавишу, когда нажимаю эту клавишу, то GO "PlayerKubik" спавнится только в точке элемента 0 Transform[] и так постоянно, всегда только в одной этой точке, а нужно чтобы и в других тоже спавнился. Перепробовал разные комбинации transform, но всё равно не работает.
Что не так я делаю в этой строчке массива Transform:
Instantiate (PlayerKubik, arrayOfSpawnPoints [Random.Range (0, arrayOfSpawnPoints.Length)]);
P.S. До этого вообще GO "PlayerKubik" проваливался сквозь землю.
Вопрос решен!
Сообщение отредактировал serezha - Среда, 08 Декабря 2021, 18:53 |
|
| |
drcrack | Дата: Вторник, 07 Декабря 2021, 20:01 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Цитата Instantiate (PlayerKubik, arrayOfSpawnPoints [Random.Range (0, arrayOfSpawnPoints.Length)]); в перегрузке которую ты юзаешь второй параметр это родитель для нового обьекта а надо так:
Код var spawn = arrayOfSpawnPoints [Random.Range (0, arrayOfSpawnPoints.Length)]; Instantiate (PlayerKubik, spawn.position, spawn.rotation);
|
|
| |
serezha | Дата: Вторник, 07 Декабря 2021, 20:30 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| drcrack, Спасибо большое! Как раз то что мне нужно! Еще хочу спросить, а можно ли это в одну строчку записать?
|
|
| |
drcrack | Дата: Вторник, 07 Декабря 2021, 22:33 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Цитата Еще хочу спросить, а можно ли это в одну строчку записать? простым способом наверно нельзя, по крайней мере ничего в голову сходу не приходит а зачем?
|
|
| |
DmitriyIM | Дата: Среда, 08 Декабря 2021, 07:50 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Цитата serezha ( ) можно ли это в одну строчку записать?
№1: ... (по словам drcrack: нет такой перегрузки у Instantiate; проверю, напишу)
№2:
Код Instantiate(PlayerKubik, arrayOfSpawnPoints[Random.Range(0, arrayOfSpawnPoints.Length)].position, Quaternion.identity);
Сообщение отредактировал DmitriyIM - Среда, 08 Декабря 2021, 15:42 |
|
| |
drcrack | Дата: Среда, 08 Декабря 2021, 09:07 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| DmitriyIM, вариант 1 не скомпилируется (нет такой перегрузки у Instantiate), вариант 2 игнорирует вращение спауна (тс не писал явно что ему нужно вращение, но в его первом варианте, хоть и кривом, вращение было, в моем тоже было, и если ты хочешь это записать в одну строчку, учитывай вращение тоже)
Сообщение отредактировал drcrack - Среда, 08 Декабря 2021, 09:11 |
|
| |
DmitriyIM | Дата: Среда, 08 Декабря 2021, 13:42 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Цитата drcrack ( ) вариант 1 не скомпилируется (нет такой перегрузки у Instantiate)
Точно? По информации из https://docs.unity3d.com/ScriptReference/Object.Instantiate.html он должен быть, но сейчас нет возможности это проверить, поэтому пока его убрал.
Цитата drcrack ( ) если ты хочешь это записать в одну строчку, учитывай вращение тоже) Ну в качестве альтернативы можно вместо переменной написать свою функцию а в ней уже брать позицию и поворот.
|
|
| |
drcrack | Дата: Среда, 08 Декабря 2021, 18:20 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| Цитата https://docs.unity3d.com/ScriptReference/Object.Instantiate.html он должен быть в перегрузке с 2 параметрами второй из них это родитель для нового обьекта. ее конечно тоже можно использовать но обьект будет создаваться внутри спауна что не очень удобно
Цитата Ну в качестве альтернативы можно вместо переменной написать свою функцию а в ней уже брать позицию и поворот. можно. но не в одну строчку
Сообщение отредактировал drcrack - Среда, 08 Декабря 2021, 18:23 |
|
| |
serezha | Дата: Среда, 08 Декабря 2021, 18:45 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Цитата Instantiate(PlayerKubik, arrayOfSpawnPoints[Random.Range(0, arrayOfSpawnPoints.Length)].position, Quaternion.identity); DmitriyIM, спасибо, строка работает! Кстати, я пытался в самом начале до создания темы делать команду и ставить в самый конец "Quaternion.identity", но юнька ругалась страшно))) я не догадался поставить ".position" перед поворотом.
Цитата drcrack ( ) простым способом наверно нельзя, по крайней мере ничего в голову сходу не приходит а зачем? ИМХО: Для удобства Просто заметил, что если изначально писать строчкой, а не в столбик то в скрипте, где например много команд, не придется долго крутить колесиком мыши или листать сбоку, чтобы модифицировать нужный участок кода т.е. 50 строк более лучше..я бы сказал эстетичней что ль смотрится:) чем 150 строк. В любом случае Всем большая благодарность, вопрос решен!
Сообщение отредактировал serezha - Среда, 08 Декабря 2021, 18:49 |
|
| |
Robinzon787 | Дата: Четверг, 09 Декабря 2021, 12:16 | Сообщение # 10 |
Construct'орщик
Сейчас нет на сайте
| Цитата serezha ( ) ИМХО: Для удобства Просто заметил, что если изначально писать строчкой, а не в столбик то в скрипте, где например много команд, не придется долго крутить колесиком мыши или листать сбоку, чтобы модифицировать нужный участок кода т.е. 50 строк более лучше..я бы сказал эстетичней что ль смотрится:) чем 150 строк.
Для этого ты выносишь соответствующий код в отдельный метод с хорошим, говорящим названием, опускаешь этот метод ниже в коде, чтобы в глаза не бросался сразу. Когда в следующий раз обратишься к своему коду увидишь метод, который по названию тебе скажет что он делает. Если нужно изменить то перейдешь в метод и изменишь. Писать в одну строку плохая практика, сильно нагружает код. Иногда лучше наоборот разделить код как можно больше, повышает читаемость и нагржуенность строки. Может сейчас ты так и не думаешь, но когда таких участков будет больше и ты придешь к коду через пару недель или даже месяцев, то поймешь что ошибался по поводу 50 длинных vs 150 коротких строк.
Переустановил ос - начал жизнь с чистого листа.
|
|
| |
serezha | Дата: Воскресенье, 19 Декабря 2021, 21:29 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Robinzon787, про написание отдельного метода мне известно это самое первое что приходит на ум, видимо я не совсем правильно изложил свою мысль Размножение методов не подходит, так как опять добавляет лишние строки, плюс то что говорите "метод опускать ниже в коде чтобы в глаза не бросался" как раз и будет лишним действием опять крутить к низу кода чтобы вспомнить что туда засунул в это метод, а учитывая что если этих методов сотни, то это будет просто жесть... Я имел ввиду чтобы участки кода разложить по полочкам в скрипте для легкого восприятия человеком, а когда отдельные куски кода находятся в разных методах как предлагаете, то тогда сложно "ловить" что куда чего отправляется или меняется, прыгая при чтении кода из одного места в другое...может размножение методов кому то и будет удобно, но не мне
Сообщение отредактировал serezha - Воскресенье, 19 Декабря 2021, 22:42 |
|
| |
drcrack | Дата: Понедельник, 20 Декабря 2021, 09:20 | Сообщение # 12 |
старожил
Сейчас нет на сайте
| Цитата как раз и будет лишним действием опять крутить к низу кода чтобы вспомнить что туда засунул в это метод, а учитывая что если этих методов сотни, то это будет просто жесть... %) в любой нормальной IDE есть возможность как быстро перейти к реализации метода, так и вернуться обратно, так что крутить ничего не надо
Цитата может размножение методов кому то и будет удобно, но не мне посмотрим на тебя через годик-другой
Сообщение отредактировал drcrack - Понедельник, 20 Декабря 2021, 09:22 |
|
| |
serezha | Дата: Понедельник, 20 Декабря 2021, 15:00 | Сообщение # 13 |
был не раз
Сейчас нет на сайте
| Цитата drcrack ( ) в любой нормальной IDE есть возможность как быстро перейти к реализации метода, так и вернуться обратно, так что крутить ничего не надо
Я не про возможность автоматической прокрутке говорю, а про перемещение из одного участка в другой в плане читаемости кода человеком т.е. быстрого его понимания человеком.
Цитата drcrack ( ) посмотрим на тебя через годик-другой
Я не один год занимаюсь написанием кода и уже давно проверено что размножение методов не лучший вариант! Спорить какой лучше цвет бессмысленно, так как каждый программист по своему пишит код как ему удобнее.
А если по делу, если хочешь реально помочь уважаемый знаток кода то тут тема актуальна
https://gcup.ru/forum/59-103628-1
потому что философия философией, но если сможешь реально помочь в этом вопросе буду очень признателен
|
|
| |
|