Суббота, 16 Ноября 2024, 00:57

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • sk0rpi0nДата: Воскресенье, 01 Июля 2012, 16:36 | Сообщение # 2461
    Tiberium
    Сейчас нет на сайте
    Понятно. Я уже начинаю путаться от неработоспособности моего кода в определенной части, которую я уже раз 20 переписывал... sad
    UPD: Как получить В переменную "GameObject" объект, в который попадает луч?




    Adventures of the Purple Ball - готов.
    Wanderer - готов.


    Сообщение отредактировал sk0rpi0n - Воскресенье, 01 Июля 2012, 16:47
    pixeyeДата: Воскресенье, 01 Июля 2012, 17:54 | Сообщение # 2462
    Red Winter Software
    Сейчас нет на сайте
    Quote (sk0rpi0n)
    Понятно. Я уже начинаю путаться от неработоспособности моего кода в определенной части, которую я уже раз 20 переписывал...
    UPD: Как получить В переменную "GameObject" объект, в который попадает луч?


    Смотри.

    Code
    RaycastHit hit;  
    - эта переменная отвечает за за объект что столкнется с лучем.

    Code
    if (Physics.Raycast(ray,out hit, Mathf.Infinity))
    - для твоего вопроса ключевым словом является out hit.
    а дальше все просто...

    если столкновение происходит то ты делаешь с hit что хочешь. Например:
    Code
    GameObject o = hit.collider.gameObject;


    Для большинства параметров тебе нужно будет обязательно указать .collider ( через этот компопнент происходит взаимодействие ), дальше ты обращаешься к нужнуму тебе элементу.
    Например если у этого объекта есть скрипт к которому ты хочешь обратиться это можно сделать так:
    Code
    hit.collider.gameObject.GetComponent<_имя_скрипта_>()._публичная переменная или функция
    ;


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    BrightSpotДата: Воскресенье, 01 Июля 2012, 18:18 | Сообщение # 2463
    заслуженный участник
    Сейчас нет на сайте
    как из одного скрипта вытянуть переменные для использования в другом?(С#)


    Более мощный компьютер глючит быстрее и точнее.
    MyACTДата: Воскресенье, 01 Июля 2012, 18:27 | Сообщение # 2464
    C# CODERS
    Сейчас нет на сайте
    BrightSpot, через GetComponent.

    Добавлено (01.07.2012, 18:27)
    ---------------------------------------------
    Вот пример:
    GetComponent<СКРИПТ>().Переменная;


    3дэшечки: https://sketchfab.com/myactyindie
    Курентли воркс он: https://myacty.itch.io/raskopnik
    BrightSpotДата: Воскресенье, 01 Июля 2012, 18:33 | Сообщение # 2465
    заслуженный участник
    Сейчас нет на сайте
    с меня +=) Но есть ли способ вытаскивать разные переменки с одного скрипта не юзая каждый раз GetComponent()??


    Более мощный компьютер глючит быстрее и точнее.
    gggaptypgggДата: Воскресенье, 01 Июля 2012, 18:53 | Сообщение # 2466
    почетный гость
    Сейчас нет на сайте
    Расскажите пожалуйста о transform.LookAt и как им пользоваться? К примеру как её присоединить к мыше, чтобы когда повернешь мышь, то и камера поворачивалась.

    pixeyeДата: Воскресенье, 01 Июля 2012, 18:56 | Сообщение # 2467
    Red Winter Software
    Сейчас нет на сайте
    Quote (BrightSpot)
    с меня +=) Но есть ли способ вытаскивать разные переменки с одного скрипта не юзая каждый раз GetComponent()??


    Объявляешь переменную скрипта.

    Code
    MyScript _script;

    _script = GetComponent<MyScript>();

    _script.foo +=1;


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    BrightSpotДата: Воскресенье, 01 Июля 2012, 19:04 | Сообщение # 2468
    заслуженный участник
    Сейчас нет на сайте
    ну и на последок: как определить скрипт определенного обьекта?


    Более мощный компьютер глючит быстрее и точнее.
    pixeyeДата: Воскресенье, 01 Июля 2012, 19:16 | Сообщение # 2469
    Red Winter Software
    Сейчас нет на сайте
    Quote (BrightSpot)
    ну и на последок: как определить скрипт определенного обьекта?


    Увы это сложнее. Можно делать проверки на то есть ли такой компонент или нет. Если тебе надо добиться анонимности то лучше использовать мессенджеры.
    Если у тебя несколько объектов с разными скриптами но надо делать для них один набор действий то сделай класс родитель и виртуальные методы.

    Тогда сможешь обращаться к одному скрипту ( классу родителю ) вызывая этот метод.

    Code
    public class mainObject: monobehaviour{  
    public virtual void DoFoo(){  
    }
    }


    Code
    public class childObject: mainObject{  

    public override void DoFoo(){  

    }

    }


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    BrightSpotДата: Воскресенье, 01 Июля 2012, 19:57 | Сообщение # 2470
    заслуженный участник
    Сейчас нет на сайте
    у меня несколько обьектов(мобов) у которых скрипт с переменными статов... так вот при активации атаки у плеера нужно что бы действовало это только на выбраный обьект... тоесть переменная hp изменяласьб только у определенного(выбраного) обьекта...


    Более мощный компьютер глючит быстрее и точнее.
    pixeyeДата: Воскресенье, 01 Июля 2012, 20:06 | Сообщение # 2471
    Red Winter Software
    Сейчас нет на сайте
    Quote (BrightSpot)
    у меня несколько обьектов(мобов) у которых скрипт с переменными статов... так вот при активации атаки у плеера нужно что бы действовало это только на выбраный обьект... тоесть переменная hp изменяласьб только у определенного(выбраного) обьекта...


    Тогда советую прочитать верх странички и конец предыдущей. Я давал ответ по лучам и коллайдерам которые отвечают твоему запросу на действие с выбранным объектом.


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    BrightSpotДата: Воскресенье, 01 Июля 2012, 20:20 | Сообщение # 2472
    заслуженный участник
    Сейчас нет на сайте
    все понял=)) спс

    Добавлено (01.07.2012, 20:20)
    ---------------------------------------------
    поход не совсем понял...

    Code
        public GameObject self;
      private Mob_stats ml=self.GetComponent<Mob_stats>();

    выдает ошибку...



    Более мощный компьютер глючит быстрее и точнее.
    pixeyeДата: Воскресенье, 01 Июля 2012, 20:22 | Сообщение # 2473
    Red Winter Software
    Сейчас нет на сайте
    Quote (BrightSpot)
    ыдает ошибку...


    Всегда пиши ошибку если выдает ошибку) у тебя в дебагере все написано, копипасть сюда)


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    BrightSpotДата: Воскресенье, 01 Июля 2012, 20:25 | Сообщение # 2474
    заслуженный участник
    Сейчас нет на сайте
    сорь... в девелопере: инициализатор поля не может обращатся к нестатичному полю, методу или свойству"Monster_Ai.self"


    Более мощный компьютер глючит быстрее и точнее.
    pixeyeДата: Воскресенье, 01 Июля 2012, 20:26 | Сообщение # 2475
    Red Winter Software
    Сейчас нет на сайте
    Quote (BrightSpot)
    сорь... в девелопере: инициализатор поля не может обращатся к нестатичному полю, методу или свойству"Monster_Ai.self"


    кинь весь скрипт)


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    BrightSpotДата: Воскресенье, 01 Июля 2012, 20:27 | Сообщение # 2476
    заслуженный участник
    Сейчас нет на сайте
    воть... я работающую часть в коменты вынес что бы глаза не морочало ошибками:

    Code
    public class Monster_Ai : MonoBehaviour {
      //выбраный обьект
      public Transform target;
      public GameObject self;
      private Mob_stats ml=self.GetComponent<Mob_stats>();

      private bool tru_target = false;
       
       
      void awake(){

      }
      // Use this for initialization
      void Start () {

      }

      // Update is called once per frame
      void Update () {
    /*  if (self.GetComponent<Mob_stats>().agr>=10)
       {
        if (Vector3.Distance(target.position,transform.position) < GetComponent<self.Mob_stats>().attack_radius)
       {
         tru_target=true;
       }
        if (tru_target==true)
        {
        Debug.DrawLine(target.position,transform.position,Color.red);
         if (Vector3.Distance(target.position,transform.position) > GetComponent<self.Mob_stats>().attack_distance)
         {
         
        transform.rotation=Quaternion.Slerp(transform.rotation,
                                  Quaternion.LookRotation(target.position-transform.position),
                                  GetComponent<self.Mob_stats>().rot_speed*Time.deltaTime);
        transform.Translate(Vector3.forward *GetComponent<self.Mob_stats>().move_speed* Time.deltaTime,Space.Self);
         }
          
        }
        if (Vector3.Distance(target.position,transform.position) > GetComponent<self.Mob_stats>().max_attack_radius)
       {
         tru_target=false;
         GetComponent<self.Mob_stats>().agr=GetComponent<self.Mob_stats>().s_agr;
       }
       }  
        
       
    */    }
    }



    Более мощный компьютер глючит быстрее и точнее.
    pixeyeДата: Воскресенье, 01 Июля 2012, 20:31 | Сообщение # 2477
    Red Winter Software
    Сейчас нет на сайте
    убери везде GetComponent< self.Mob_stats >() на GetComponent< Mob_stats >()

    И нельзя инициализировать в объявлениях

    private Mob_stats ml=self.GetComponent(); - это раздели на

    private Mob_stats ml;

    а в авейк пиши

    ml = self.GetComponent< Mob_stats >();
    //

    И еще. Если берешь свой же скрипт то можно просто писать GetComponent< my_script >() ; без self.


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    BrightSpotДата: Воскресенье, 01 Июля 2012, 20:38 | Сообщение # 2478
    заслуженный участник
    Сейчас нет на сайте
    Quote (pixeye)
    убери везде GetComponent() на GetComponent()

    эт и так ясно=)) прост я еще не дошел туда=)
    спс=))

    Добавлено (01.07.2012, 20:38)
    ---------------------------------------------
    все супер=)) все работает=)) когда смогу еще ++ подкину=))



    Более мощный компьютер глючит быстрее и точнее.
    MyACTДата: Понедельник, 02 Июля 2012, 07:25 | Сообщение # 2479
    C# CODERS
    Сейчас нет на сайте
    Unity выдает еще те сюрпризы....Вообщем,половина текстур скайбоксов из Standart Assets просто пропали!Плюс до этого вылезли швы на них.
    Дайте пожалуйста ссылку где можно скачать заново скайбоксы smile

    Добавлено (02.07.2012, 07:25)
    ---------------------------------------------
    В частности нету UP текстур


    3дэшечки: https://sketchfab.com/myactyindie
    Курентли воркс он: https://myacty.itch.io/raskopnik
    -AL-Дата: Вторник, 03 Июля 2012, 20:38 | Сообщение # 2480
    был не раз
    Сейчас нет на сайте
    Прошу простить, могу повторятся.
    Но вот вопрос:
    Я создаю GUI Box
    Code
    GUI.Box (boxEnergy, _energy + "%");

    И мне нужно чтобы при наведении на этот самый бокс появлялся еще один в позиции мыши. (что-то типо title на html)

    Пробовал работать в переменными, но все даром, ведь не знаю как сам скрипт на гуи повесить чтобы отследить его через OnMouseEnter.
    Пример прошу на C#. Заранее спасибо.
    Поиск:

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