Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
lentinant | Дата: Четверг, 03 Июля 2014, 16:33 | Сообщение # 6221 |
ленивый программист
Сейчас нет на сайте
| allods, я про List. Цитата allods ( ) если заполнить массивы другими объектами (любыми) то все массивы заполняются объектом который зашел в триггер, поскольку имя его не равняется именам други Вообще не понимаю, что ты там делаешь. Самая стандартная проверка на присутствие в массиве - делаем логическую переменную, присваиваем ее false, пропускаем foreach сравнение целевого объекта с каждым элементом массива, если совпадение есть, логическую переменную делаем true, выходим с итератора с помощью break. Судя по описанию твоей проблемы, ты вообще делаешь что-то типа Код if(players[i]!=other.collider.gameObject) { players[i]=other.collider.gameObject; }
Добавлено (03.07.2014, 16:33) --------------------------------------------- Цитата allods ( ) Я сказал что заполняет весь массив сразу , а потом и эти все уже заполняются другим объектом Так к чему тогда вообще пустые массивы?
Когда-то тут будут ссылки на крутые проекты. Или нет.
Сообщение отредактировал lentinant - Четверг, 03 Июля 2014, 16:35 |
|
| |
allods | Дата: Четверг, 03 Июля 2014, 16:37 | Сообщение # 6222 |
почти ветеран
Сейчас нет на сайте
| Цитата lentinant ( ) Так к чему тогда вообще пустые массивы? Ладно не в этом дело. Я не знаю как Цитата lentinant ( ) пропускаем foreach сравнение целевого объекта с каждым элементом массива
|
|
| |
lentinant | Дата: Четверг, 03 Июля 2014, 16:49 | Сообщение # 6223 |
ленивый программист
Сейчас нет на сайте
| Код bool ArrayContains (GameObject[] objectArray, GameObject targetObject) { flag = false; foreach (GameObject go in objectArray) { if(go == targetObject) { flag = true; break; } } return flag; }
Вот такой простенький метод для проверки. Правда, типизированный, но для твоей задачи должен подойти. Если нужен JavaScript, ничем помочь не могу, переводите сами.
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
allods | Дата: Четверг, 03 Июля 2014, 17:08 | Сообщение # 6224 |
почти ветеран
Сейчас нет на сайте
| lentinant Спасибо,
На C скрипты перешел с новым проектом , 3 дня назад, поэтому на JS перевод мне не нужен.
Поскольку я новый в С не мог бы ты мне сказать как обращаться к ArrayContains ? как мне отсылать other.collider.gameObject
|
|
| |
lentinant | Дата: Четверг, 03 Июля 2014, 18:48 | Сообщение # 6225 |
ленивый программист
Сейчас нет на сайте
| если у тебя есть массив GameObject-ов players, и объект, который ты получил со столкновения other.collider.gameObject, то метод вызывается Код bool flag = ArrayContains(players, other.collider.gameObject);
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
NEBR | Дата: Пятница, 04 Июля 2014, 09:25 | Сообщение # 6226 |
почти ветеран
Сейчас нет на сайте
| Цитата allods ( ) Получается , я делаю массив куда заношу игроков в которых попал меч, и проверяю является ли игрок одним из тех в кого он попал. Если еще не попадал то отнимаем ХП. После завершения удара я отчищаю все массивы Слушай, если вся эта заморочка с массивами нужна только для одного объекта "игрок", чтобы вычитать у него жизнь, рекомендую сделать все изначально иначе. Массивы + OnTriggerEnter на каждом объекте - это все очень прожорливо. А чтобы исключить попадание игрока под удар за один взмах меча два и более раз - возьми короутин например. И OnTriggerEnter попробуй сделать не на мече, а на игроке (не знаю, часто ли он у тебя сталкивается с коллайдерами, возможно и лучше будет оставить на мече, ну не суть) Скрипт такой например (висит на игроке) Код
int _hp = 10; bool _flag;
void OnTriggerEnter(Collider other) { if(!_flag) { if(other.tag == "sword") { _hp -= 1; _flag = true; StartCoroutine(Delay(1.0f)) // здесь исключаем повторное попадание под меч (из расчета что взмах меча длится одну секунду) } } }
IEnumerator Delay(float waitTime) { yield return new WaitForSeconds(waitTime); _flag = false; }
King Size #Gamiron12
|
|
| |
allods | Дата: Пятница, 04 Июля 2014, 14:34 | Сообщение # 6227 |
почти ветеран
Сейчас нет на сайте
| Спасибо lentinant и NEBR
Я думаю надо как то по другому все реализовать , дело в том что это мультиплеер, там у каждого игрока меч.
|
|
| |
Adom | Дата: Пятница, 04 Июля 2014, 17:40 | Сообщение # 6228 |
Печенька!
Сейчас нет на сайте
| allods, А ты начинал делать обновления ? Типа если версия старая то качает новую ? Ибо я вообще тупой и не могу разобраться что да как ((
|
|
| |
allods | Дата: Пятница, 04 Июля 2014, 18:49 | Сообщение # 6229 |
почти ветеран
Сейчас нет на сайте
| Нет это можно сделать в конце
|
|
| |
Adom | Дата: Пятница, 04 Июля 2014, 19:00 | Сообщение # 6230 |
Печенька!
Сейчас нет на сайте
| allods, Эх. Просто я забился на этом моменте )
|
|
| |
allods | Дата: Пятница, 04 Июля 2014, 22:26 | Сообщение # 6231 |
почти ветеран
Сейчас нет на сайте
| делай другое, не теряй время, потом вернешься .
|
|
| |
Adom | Дата: Суббота, 05 Июля 2014, 13:59 | Сообщение # 6232 |
Печенька!
Сейчас нет на сайте
| Хорошо. Тогда еще вопрос. Как сделать DeadMatch ? Именно само воскрешение ?
|
|
| |
Левша | Дата: Суббота, 05 Июля 2014, 14:43 | Сообщение # 6233 |
почти ветеран
Сейчас нет на сайте
| Цитата Adom ( ) Как сделать DeadMatch ? Именно само воскрешение ? Обьект не *убивать, а перемещать в точку респавна.
X.cor.R (Prologue)
|
|
| |
Adom | Дата: Суббота, 05 Июля 2014, 14:52 | Сообщение # 6234 |
Печенька!
Сейчас нет на сайте
| Левша, ТЫ ГЕНИЙ! Блин. Как мне в голову то не пришло!?
|
|
| |
Левша | Дата: Суббота, 05 Июля 2014, 17:58 | Сообщение # 6235 |
почти ветеран
Сейчас нет на сайте
| Проигрываешь анимацию смерти, ждешь нужное время, деактивируешь обьект, перемещаеш, активируешь. А можно и просто рендер с коллизиями выключить.
X.cor.R (Prologue)
Сообщение отредактировал Левша - Суббота, 05 Июля 2014, 17:59 |
|
| |
Adom | Дата: Суббота, 05 Июля 2014, 19:23 | Сообщение # 6236 |
Печенька!
Сейчас нет на сайте
| Левша, А вот с активацией и деактивацией проблема. Почему-то не хочет обратно включать через SetActive
|
|
| |
allods | Дата: Суббота, 05 Июля 2014, 19:53 | Сообщение # 6237 |
почти ветеран
Сейчас нет на сайте
| enabled = true/false
|
|
| |
Adom | Дата: Суббота, 05 Июля 2014, 19:55 | Сообщение # 6238 |
Печенька!
Сейчас нет на сайте
| Попробую ) Добавлено (05.07.2014, 19:54) --------------------------------------------- И еще как сделать отображение кол-во подключенных игроков ? Добавлено (05.07.2014, 19:55) --------------------------------------------- Именно у всех . У меня получилось только для сервера (
|
|
| |
Левша | Дата: Суббота, 05 Июля 2014, 23:12 | Сообщение # 6239 |
почти ветеран
Сейчас нет на сайте
| Цитата Adom ( ) Почему-то не хочет обратно включать через SetActive Надеюсь скрипт не насамом деактивируемом обьекте висит ?
Цитата Adom ( ) У меня получилось только для сервера Ну так и посылай клиентам при каждом изменении.
X.cor.R (Prologue)
Сообщение отредактировал Левша - Суббота, 05 Июля 2014, 23:32 |
|
| |
lakoris | Дата: Воскресенье, 06 Июля 2014, 00:45 | Сообщение # 6240 |
постоянный участник
Сейчас нет на сайте
| Цитата Левша ( ) Надеюсь скрипт не насамом деактивируемом обьекте висит ? хаха)
|
|
| |