Четверг, 14 Ноября 2024, 10:16

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • Artem93regionДата: Суббота, 14 Ноября 2015, 12:15 | Сообщение # 7421
    был не раз
    Сейчас нет на сайте
    Спасибо за ответ но есть ещё вопросы:
    1)Тег игроку присвоил, создал скрипт и повесил на триггер, создал boolean переменную. В OnTriggerEnter проверку тоже сделал и в OnTriggerExit аналогично.
    Вот скрипт:

    Код
    using UnityEngine;
    using System.Collections;

    public class TriggerForDestroy : MonoBehaviour {

    public GameObject click;
    public bool _visable;

    void OnTriggerEnter(Collider other){
    if(other.CompareTag("Player")){
    click.SetActive(true);
    click.GetComponent<take>().enabled=true;
    Debug.Log("OnTriggerEnter");
    _visable = true;
    }
    }
    void OnTriggerExit(Collider other){
    if(other.CompareTag("Player")){

    click.SetActive(false);
    click.GetComponent<take>().enabled=false;
    Debug.Log("OnTriggerExit");
    _visable = false;
    }
    }
    }

    2) Далее присвоил префабу свой тег (я кстати от проверки на нажатие по UI Image из нового гуи решил отказаться, а решил использовать UI Butoon повесив на него скрипт и при нахождении игрока в триггере поставил отображение этой самой кнопки) а вот на кнопке я и завис:

    using UnityEngine;
    using System.Collections;

    public class take : MonoBehaviour {

    void Start () {

    }

    public void Method () {

    GameObject[] gos;
    gos = GameObject.FindGameObjectsWithTag("TriggerPapers");

    if(gos._visable == true){

    Debug.Log("visable == true");

    }
    }
    }

    тут юнити ругается на _visable

    Error CS1061: "System.Array" не содержит определение для "_visable". Не удалось найти метод расширения "_visable", принимающий первый аргумент типа "System.Array" (пропущено использование директивы или ссылка на сборку?) (CS1061) (Assembly-CSharp)

    и ещё как потом сделать чтобы удалился именно тот обьект у которого поменялась эта переменнныя, чтобы не все сразу?


    Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 12:21
    SkorpyXДата: Суббота, 14 Ноября 2015, 13:57 | Сообщение # 7422
    участник
    Сейчас нет на сайте
    Artem93region, во-первых, в вашем скрипте gos это массив GameObjectов, там вы обращаетесь напрямую к массиву, а нужно перебирать его в цикле.
    Во-вторых _visable - это переменная вашего скрипта, а не GameObjectа, следовательно нужно обращаться к скрипту через GetComponent. Пример на js :
    Код

    var gos : GameObject[] = GameObject.FindGameObjectsWithTag("TriggerPapers");

    for (gs in gos) {
        if (gs.GetComponent.<TriggerForDestroy>()._visable == true) {
            Debug.Log("visable == true");
        }
    }


    Сообщение отредактировал SkorpyX - Суббота, 14 Ноября 2015, 13:57
    Artem93regionДата: Суббота, 14 Ноября 2015, 15:07 | Сообщение # 7423
    был не раз
    Сейчас нет на сайте
    Перевёл на CS получилось так:

    Код
    GameObject[] gos = GameObject.FindGameObjectsWithTag("TriggerPapers");

    foreach(object gs in gos) {
    if (gs.GetComponent.<"TriggerPapers">()._visable == true) {
    Debug.Log("visable == true");
    }

    Сдесь на сколько я правильно понял, в первой строке обращаемся ко всем обьектам с тегом "TriggerPapers" далее выбираются все объекты в массиве, где к каждому можно обратиться как "gs"

    foreach(object gs in gos)

    затем в условии указывается этот самый gs потом его компонент, в котором указывается триггер и проверяется условие, но снова ошибка

    using UnityEngine;
    using System.Collections;

    public class take : MonoBehaviour {

    void Start () {
    }

    public void Method () {

    GameObject[] gos = GameObject.FindGameObjectsWithTag("TriggerPapers");
    foreach(GameObject gs in gos) {
    if (gs.GetComponent.<"TriggerPapers">()._visable == true) //Error CS1001: Ожидался идентификатор (CS1001) (Assembly-CSharp)
    Error CS1525: Недопустимый терм ')' в выражении (CS1525) (Assembly-CSharp)
    Error CS1026: ожидалась ) (CS1026) (Assembly-CSharp)
    {
    Debug.Log("visable == true");
    }
    }
    }
    }

    далее если меняю

    if (gs.GetComponent.<"TriggerPapers">()._visable == true)

    на

    if (gs.GetComponent.(TriggerPapers)._visable == true)

    то пишет только


    Error CS1001: Ожидался идентификатор (CS1001) (Assembly-CSharp)

    гуглю гуглю не могу разобрать как исправить?


    Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 15:40
    NEBRДата: Суббота, 14 Ноября 2015, 15:28 | Сообщение # 7424
    почти ветеран
    Сейчас нет на сайте
    Цитата Artem93region ()
    if (gs.GetComponent.(TriggerPapers)._visable == true;)

    дружище, зачем здесь точка с запятой? ))
    Пиши просто
    if (gs.GetComponent.(TriggerPapers)._visable)


    King Size #Gamiron12
    Artem93regionДата: Суббота, 14 Ноября 2015, 15:31 | Сообщение # 7425
    был не раз
    Сейчас нет на сайте
    NEBR, да я за был убрать это я экспериментировал)
    спасибо за замечание поправил
    без неё так же ругается


    Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 15:51
    SkorpyXДата: Суббота, 14 Ноября 2015, 15:45 | Сообщение # 7426
    участник
    Сейчас нет на сайте
    Цитата Artem93region ()
    gs.GetComponent.<"TriggerPapers">()._visable == true)

    Кавычки лишние


    Сообщение отредактировал SkorpyX - Суббота, 14 Ноября 2015, 15:47
    Artem93regionДата: Суббота, 14 Ноября 2015, 15:53 | Сообщение # 7427
    был не раз
    Сейчас нет на сайте
    Цитата SkorpyX ()
    gs.GetComponent.<"TriggerPapers">()._visable == true)

    Кавычки лишние

    пробовал тоже их убирать, те же ошибки остаються


    Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 15:54
    SkorpyXДата: Суббота, 14 Ноября 2015, 15:55 | Сообщение # 7428
    участник
    Сейчас нет на сайте
    Цитата Artem93region ()
    пробовал тоже их убирать, тогда аж 6 ошибок появляется

    TriggerPapers - это название вашего префаба, должно быть :
    Код

    gs.GetComponent.<TriggerForDestroy>()._visable == true;
    Artem93regionДата: Суббота, 14 Ноября 2015, 17:37 | Сообщение # 7429
    был не раз
    Сейчас нет на сайте
    Цитата SkorpyX ()
    пробовал тоже их убирать, тогда аж 6 ошибок появляется

    TriggerPapers - это название вашего префаба, должно быть :
    Код

    gs.GetComponent.<TriggerForDestroy>()._visable == true;


    а я тег указал) ща попробую

    Добавлено (14 ноября 2015, 16:07)
    ---------------------------------------------
    всё равно не получается те же ошибки и название префаба выделено красным

    Добавлено (14 ноября 2015, 17:37)
    ---------------------------------------------
    Вот сделал пак:

    http://rghost.ru/8MKr4wqmm

    Сообщение отредактировал Artem93region - Суббота, 14 Ноября 2015, 16:04
    berilДата: Суббота, 14 Ноября 2015, 23:37 | Сообщение # 7430
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Ну у тебя Visual Studio ? Он же должен показывать где ошибка в какой строке



    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    Artem93regionДата: Суббота, 14 Ноября 2015, 23:50 | Сообщение # 7431
    был не раз
    Сейчас нет на сайте
    Цитата beril ()
    Ну у тебя Visual Studio ? Он же должен показывать где ошибка в какой строке


    ошибка в этой строке:

    if(gs.GetComponent.<TriggerForDestroy>()._visable == true){
    }

    Error CS1001: Ожидался идентификатор (CS1001) (Assembly-CSharp)
    Error CS1525: Недопустимый терм ')' в выражении (CS1525) (Assembly-CSharp)
    Error CS1026: ожидалась ) (CS1026) (Assembly-CSharp)

    Добавлено (14 ноября 2015, 23:50)
    ---------------------------------------------
    всё не могу сделать проверку переменной и кстати редактирую в юньковском редакторе

    wastermanДата: Воскресенье, 15 Ноября 2015, 03:25 | Сообщение # 7432
    частый гость
    Сейчас нет на сайте
    Привет!
    Хочу уточнить, вот этот код пускает луч из точки в точку
    RaycastHit hit;
    Ray ray = new Ray(transform.position, player.transform.position - transform.position);
    а вот этот пускает допустим на единицу выше (метр)
    RaycastHit hit;
    Ray ray = new Ray(transform.position+ Vector3.up, player.transform.position - transform.position+ Vector3.up);
    вот сам вопрос, как пустить луч ниже?
    Писал
    Ray ray = new Ray(transform.position+ Vector3.up/2, player.transform.position - transform.position+ Vector3.up/2);
    Но такой вариант не всегда срабатывает правильно.
    брал в скобки и код отказывался работать
    Ray ray = new Ray(transform.position+ (Vector3.up/2), player.transform.position - transform.position+ (Vector3.up/2));
    так как же все таки пустить этот луч выше чем из нижней точки?


    Рок форева!
    Не графоМан!
    Холодный космос.
    PocifikДата: Воскресенье, 15 Ноября 2015, 14:23 | Сообщение # 7433
    участник
    Сейчас нет на сайте
    Artem93region, точки не должно быть перед "<".
    Artem93regionДата: Воскресенье, 15 Ноября 2015, 23:23 | Сообщение # 7434
    был не раз
    Сейчас нет на сайте
    Всё, на конец-то мне помогли разобраться, в итоге всё разместилось в одном скрипте, а так же поменялся сам подход к решению данной задаче, в общем заработало)
    allodsДата: Среда, 25 Ноября 2015, 22:14 | Сообщение # 7435
    почти ветеран
    Сейчас нет на сайте
    Ребят помогите правильно повернуть 2Д объект через рейкаст + угол рейкаста к поверхности
    Есть объект кидаю рейкаст в 4 стороны: верх , низ, лево, право
    Если есть соприкосновение лучей то выбираю самый близкий/короткий . Дальше нахожу Vector2 reflect и угол падения луча на коллайдер. Есть такие данные. Но иногда смотрит совсем в другую сторону. Дело в угле
    луча. он всегда в позитиве. Я не могу понять как правильно вычислять и вертеть

    Цитата
    Vector2 incomingVec = hits [0].point - new Vector2 (transform.position.x, transform.position.y);
    reflectVec = Vector2.Reflect (incomingVec, hits [0].normal);
    angleHit = Vector2.Angle (reflectVec, hits [0].normal);

    вот рефлект и угол а как дальше вертеть
    JessyStormДата: Четверг, 26 Ноября 2015, 10:29 | Сообщение # 7436
    заслуженный участник
    Сейчас нет на сайте
    Гайс, если кто-нибудь разбирается в шейдерном коде в юньке, интересуют fragment&vertex шейдеры, черканите в личку или скайп - psihrus1, спасибо.

    https://www.artstation.com/artist/jessystorm
    ExcelsiorerДата: Вторник, 01 Декабря 2015, 13:47 | Сообщение # 7437
    частый гость
    Сейчас нет на сайте
    Движение реализованно стандартным FirstPersonController. Как мне из другого скрипта изменить скорость движения персонажа в FirstPersonController?
    xMoonGuarDxДата: Вторник, 01 Декабря 2015, 14:56 | Сообщение # 7438
    участник
    Сейчас нет на сайте
    Excelsiorer, передать ссылку на контроллер в изменяющий скрипт.
    ExcelsiorerДата: Вторник, 01 Декабря 2015, 15:05 | Сообщение # 7439
    частый гость
    Сейчас нет на сайте
    xMoonGuarDx, А как дальше изменить скорость? Просто обратиться к переменным в скрипте FirstCharacterController не получается, выдает ошибку
    MANMANAДата: Среда, 02 Декабря 2015, 20:16 | Сообщение # 7440
    почти ветеран
    Сейчас нет на сайте
    Цитата xMoonGuarDx ()
    xMoonGuarDx, А как дальше изменить скорость? Просто обратиться к переменным в скрипте FirstCharacterController не получается, выдает ошибку

    информативненько
    http://answers.unity3d.com/questio....ri.html
    http://answers.unity3d.com/questio....pe.html


    http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
    VKонтакте 3Dbuffer

    Последнее:

    Новый раздел "Текстуры"

    Как запатентовать, защитить техническое решение, игру, идею
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг