![]() |
Ответ: Передача переменной в метод
Я снова со своими тупыми вопросами.
Продолжаю делать скрипт камеры. Поставило в тупик следующее: Код:
public void Camera_SlideCalc () { Код:
private Vector3 velocity = Vector3.zero; Всю голову поломал, видимо что-то опять недопонимаю... может velocity обнулять нужно после вызова функции? upd: сократил функцию до вида, проблема осталась: Код:
public void Camera_SlideCalc () { |
Ответ: Передача переменной в метод
Ты двигаешь цель, а камера как движется?
|
Ответ: Передача переменной в метод
камера наследует движение от цели как дочерний объект, пробовал вместо трансформа цели поставить трансформ камеры - то же самое.
Вот код целиком. Функция подобного движения активируется при долгом нажатии на левую кнопку мыши. Все действия в функциях с пометкой Slide PHP код:
|
Ответ: Передача переменной в метод
У тебя там кажется влияет
PHP код:
|
Ответ: Передача переменной в метод
разобрался, оказывается конфликтовали две velocity из разных частей кода. Я использовал один и тот же контейнер для хранения - видимо это и давало искажение.
|
Ответ: Передача переменной в метод
Вопрос на логику кода, читал сегодня справки, думал над реализацией.
В общем висит у меня на камере метод, отвечающий за тряску камеры. Хочу разобраться как лучше реализовать следующую логику: Метод тряски могут вызывать разные игровые объекты и события (взрывы, падения, повреждение и т.п) из собственных скриптов. Самый простой способ как я понял это отправка сообщений на активацию скрипта из других с помощью getComponent. Появился вопрос следующий, в методе есть возможность задавать длительность тряски с помощью переменной. Как реализовать установку длительности тряски из тех скриптов которые будут вызывать этот метод? Через getComponent смысл понятен, просто сначала посылать в скрипт значение продолжительности тряски и затем активировать его. Рассматриваю вариант с подпиской метода на события, но мне кажется это слишком запутывает задачу (или нет - подскажите?) тогда событие, которое активирует метод должно задать ему длительность. Как это реализовать? Сориентируйте как должен выглядеть скрипт чтобы в него можно было передавать длительность (shakeOver) из других скриптов, которые вызывают событие. Интересует изменение метода ShakeIsDo (), как его доработать? Надеюсь правильно объяснил вопрос. Не пинайте в справки, я просто опять упускаю какую-то базовую концепцию ООП. Отправлять в метод/функцию объект для его модификации и возврата с помощью return я разобрался, а тут требуется void но с заданным параметром, которым управляют другие объекты, совершенно разного типа. PHP код:
|
Ответ: Передача переменной в метод
Можно сделать через getComponent, ведь ты по сути получаешь этим способом экземпляр класса и можешь вызывать любой метод.
Делаешь public метод ShakeStart с нужными параметрами, как минимум с параметром shakeOver PHP код:
PHP код:
PHP код:
|
Ответ: Передача переменной в метод
Ещё: чтобы каждый раз не доставать экземпляр скрипта через
CameraShake shaker = camera.GetComponent<CameraShake>(); можно сделать статическую переменную в классе CameraShake и статический метод тряски, и обращаться напрямую через имя класса: PHP код:
|
Ответ: Передача переменной в метод
Жека огромное спасибо, все доходчиво! На основе советов сделал целый класс который передается в функцию с разными наборами параметров для тряски, не только длительность но и другие
)). Сейчас встал в ступор снова. Задача, рейкастом выделить объекты на плоскости. Написал код, рейкаст исправно отрисовывает курсор в месте пересечения, но ни в какую не ловит объекты, которые на нем расположены. В чем беда? Layer стоит у объектов Default PHP код:
|
Ответ: Передача переменной в метод
Цитата:
|
Ответ: Передача переменной в метод
Цитата:
|
Ответ: Передача переменной в метод
Есть какая-нибудь альтернатива использовать GameObject.FindGameObjectsWithTag для заполнения списка List<>, а не массива []? Делаю через промежуточный массив, но понимаю что тем самым удваиваю нагрузку на память.
PHP код:
|
Ответ: Передача переменной в метод
Цитата:
Код:
UnitList.AddRange(GameObject.FindGameObjectsWithTag("Unit Player")); |
Ответ: Передача переменной в метод
Ребят, посоветуйте книги/статьи/материалы которые можно почитать по системам событий, делегатам, подпискам и синглтонам. Вчера уперся в стену в скрипте, понял что без понимания этих механизмов дальше в разработке не продвинусь, так как сложность взаимодействия скриптов друг с другом растет в геометрической прогрессии, а getcomponent на каждый чих скрипта делать накладно )))
Хочу разобраться в простейшем примере, уже поставил задачу. Смысл такой - есть список объектов. Нужно создать событие (выделение конкретного объекта мышкой), на которое подпишутся все остальные объекты и проделают у себя манипуляции со своими скриптами. Читал пару статей на хабре, но не могу в голове уложить алгоритм - где объявлять издателя, где производить подписку, какая роль статических классов и методов во всем этом. В общем что посоветуете? MDSN уже почитал - для восприятия сложно. |
Ответ: Передача переменной в метод
http://gameprogrammingpatterns.com/contents.html
Можно каждую главу отдельно от других читать, написано довольно хорошо и понятно (на мой взгляд). Ещё по паттернам читал книгу "банды четырёх", но не впечатлился. |
Часовой пояс GMT +4, время: 08:08. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot