![]() |
Ответ: Вопросы от новичка
При рейкасте луч врезается в самого же игрока, который пустил луч. Если луч дальше отодвинуть от игрока, то может будет пропускать врагов, которые рядом(
|
Ответ: Вопросы от новичка
помести игрока в другой слой, стреляй во все, кроме этого слоя. С врагами можно поступить так же.
|
Ответ: Вопросы от новичка
А как в С# лучше такое сообщение передать объекту в который попал?
Хотел повесить на скрипт интерфейс, которому и передавать это сообщение, но GetComponent не хочет искать компонент с моим интерфейсом( Хотя можно просто все скрипты объекта проверить на принадлежность интерфейсу и вызвать нужный метод в нужных объектах. |
Ответ: Вопросы от новичка
WISHMASTER35, странно, что не ищет. Ты уверен, что компонент висит? Может в имени ошибка? Код в студию.
Расскажу про свой топорный метод решения схожей задачи: 1. Создаем класс Код:
class RayReceiver : MonoBehaviour { Тогда класс наследуем не от MonoBehaviour, а от RayRaceiver Код:
class TestClass : RayReceiver { Код:
if (Input.GetMouseButtonDown(0)) P.S. Кстати нашел баг: допустим лежит кубик с RigidBody на другом c BoxCollider, то сообщение OnCollissionStay через некоторое время перестает приходить, пока кубику с RigidBody WakeUp() не сделать. |
Ответ: Вопросы от новичка
Aikon, не совсем правильно ты делаешь. Для этого используются интерфейсы.
И если у тебя есть класс, который уже наследуется от друга твоего класса, то твой способ не сработает. Я сделал интерфейс Код:
public interface BulletReceiver { А при выстреле делаю так: Код:
MonoBehaviour[] components = hit.collider.gameObject.GetComponents<MonoBehaviour>(); Я вот только не понял в C# и родительские классы и интерфейсы пишутся через запятую после двоеточия? В java для наследования используется extends, а для интерфейсов implements. |
Ответ: Вопросы от новичка
Цитата:
Цитата:
С классом да, налажал, забыл глянуть что есть интерфейсы. Переделал. У меня все проходит. Вот код Интерфейс Код:
public interface ITest { Чтобы она могла быть найдена через GetComponent я так же отнаследовал ее от базового класса MonoBehaviour Код:
using UnityEngine; Код:
using UnityEngine; |
Ответ: Вопросы от новичка
Цитата:
А OnPostRender вызывается только у камеры? Нету методов, которые вызывались бы после рендеринга или перед Update? Кстате, я так и не понял Raycast будет попадать в CharacterContoller? Ведь он сам использует CapsuleCast. Как тут быть? |
Ответ: Вопросы от новичка
WISHMASTER35, т.е. ты хочешь выполнять поиск не компонентам и потом проверять у них наличие интерфейса, а выполнять поиск по наименованию интерфейса, отбирая компоненты, которые поддерживают его, а потом вызывать метод у тех компонент, где данный интерфейс реализован? Вроде теже яйца, только вид с боку и не факт, что поддерживается Unity (pax думаю придет напишет).
С главным циклов в Unity не все понятно. Т.е. если на сцену два кубика добавить и у каждого Update задать, то порядок вызовов этих Update-ов мне кажется заранее не будет известен, либо не стоит к нему привязываться. Можно попробовать использовать LateUpdate (только для потомков MonoBehaviour) и FixedUpdate (только для физических тел). |
Ответ: Вопросы от новичка
Aikon, да я же и писал, что GetComponent не ищет по имени интерфейса.
А зачем вообще нужно знать порядок вызовов Update? У меня в Update у оружия вызывается метод принятия пули у врага. Я хочу в этом методе принятия пули сделать врага красным, а после одного рендеринга сделать его снова белым. Но как это сделать после того как отрендерился красный враг хз. По крайней мере без дополнительных переменных. А то можно в OnWillRender поднять флаг, что в следующем Update сделать врага снова белым. |
Ответ: Вопросы от новичка
А не проще
PHP код:
|
Ответ: Вопросы от новичка
Жаль только через SendMessage не передать больше одного параметра(
А кто-нибудь делал GUI для разных экранов? Как его сделать, что бы нормально смотрелось? Настроил под свой размер, а на маленьком джойстик на пол экрана и даже сдвинуть его не куда. И можно получить плотность пикселей? |
Ответ: Вопросы от новичка
Через Screen получить текущее разрешение экрана и исходя из него позиционировать. Мессаги медленная операция.
|
Ответ: Вопросы от новичка
Lestar, по ширине или длине экрана выравнивать? На планшетах не будет очень большими элементы? тут желательно плотность пикселей еще знать.
|
Ответ: Вопросы от новичка
если использовать ортогональную камеру и плейны, то высота ортогональной камеры выстанавливается в половину высоты экрана, если экран уменьшается, то плены остаются в том же масштабе относительно размеров экрана. Единственное можно скорректировать горизонтальную позицию немного. Интерфейс такой можно рендерить отдельной камерой.
|
Ответ: Вопросы от новичка
pax, т.е. рисовать не через GUI, а в 3д? Тогда еще сложнее будет т.к. все будет растягиваться в зависимости от соотношения сторон. Ну ладно как нибудь буду подстраивать размеры GUITexture.
Кстати, нет скрипта что-то типа GUITexture, только чтобы отслеживал нажатие мышкой\тачем на текстуру как GUI.Button? А то из-за такой мелочи свой скрипт создавать не очень хочется) |
Часовой пояс GMT +4, время: 11:56. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot