Среда, 24 Апреля 2024, 10:31

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • BadsДата: Суббота, 15 Февраля 2014, 20:50 | Сообщение # 5601
    частый гость
    Сейчас нет на сайте
    Цитата lentinant ()
    Нефиг устанавливать юнити в директорию с русскими символами в пути.


    Хахах)) Понял)) Спасибо)))))
    VoreshДата: Воскресенье, 16 Февраля 2014, 02:36 | Сообщение # 5602
    частый гость
    Сейчас нет на сайте

    Подскажите, пожалуйста, почему выдает ошибку" NullReferenceException: Object reference not set to an instance of an object
    UnityEngine.GUI.Box (Rect position, System.String text) (at C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/GUI.cs:365)
    MainMenu.Main () (at Assets/MainMenu.cs:30)" ?
    При запуске игры. Как я понимаю, он считает, что кнопка не загружена. Как ее можно загрузить? При этом все отлично функционирует.
    PoqXertДата: Воскресенье, 16 Февраля 2014, 04:44 | Сообщение # 5603
    постоянный участник
    Сейчас нет на сайте
    Цитата Voresh ()
    Как я понимаю, он считает, что кнопка не загружена.

    Да, она не загружена.
    Почему?
    В C# есть ключевый слова (например, int, public), которыми нельзя называть переменные и т.д.
    Но также есть и ключевая функция Main(), она вызывается при запуске скрипта (не путать с Awake() и Start() - это функции от Unity).
    Выходит, что твоя функция Main() вызывается раньше всего остального, а значит кнопка не может быть загружена.
    Решение: Переименуй функцию.


    Расширения для Unity3D
    Блог программиста - PoqXert.ru
    lentinantДата: Воскресенье, 16 Февраля 2014, 09:26 | Сообщение # 5604
    ленивый программист
    Сейчас нет на сайте
    Можно ли с помощью двухмерных джойнтов симулировать эффект трэйла? Хочу сделать подобие змейки. Пробовал с помощью DistanceJoint, но там, если дистанция между двумя элементами меньше заданной, то второй элемент в принципе не двигается, а за ним не двигаются и остальные. Мне же нужно, чтобы каждый элемент повторил путь предыдущих.

    Когда-то тут будут ссылки на крутые проекты. Или нет.
    seamanДата: Воскресенье, 16 Февраля 2014, 13:06 | Сообщение # 5605
    старожил
    Сейчас нет на сайте
    Перенеси все присваивания эти:
    Код
    private Rect Mm_mmbox_rect = new Rect(Screen.width/2-69,Screen.height/2-100,138,300);
    private Rect Mm_1button_rect = new Rect(Screen.width/2-64,Screen.height/2-64,128,64);
    private Rect Mm_2button_rect = new Rect (Screen.width/2-64,Screen.height/2,128,64);
    private Rect Mm_3button_rect = new Rect (Screen.width/2-64,Screen.height/2+64,128,64);
    private Rect Mm_4button_rect = new Rect (Screen.width/2-64,Screen.height/2+128,128,64);

    в Start
    PoqXertДата: Воскресенье, 16 Февраля 2014, 13:29 | Сообщение # 5606
    постоянный участник
    Сейчас нет на сайте
    Цитата seaman ()
    Перенеси все присваивания эти:

    Самое интересное, что и без переноса работает (хотя должно было выдать ошибки ещё при компиляции).


    Расширения для Unity3D
    Блог программиста - PoqXert.ru
    seamanДата: Воскресенье, 16 Февраля 2014, 13:41 | Сообщение # 5607
    старожил
    Сейчас нет на сайте
    Хм, действительно. Странно, но факт.
    TiodorДата: Воскресенье, 16 Февраля 2014, 14:32 | Сообщение # 5608
    участник
    Сейчас нет на сайте
    Кто подскажет как сделать сетку в юнити внутри редактора, чтобы можно было по сетке ставить спрайты?

    VK: Tiodor
    LaushДата: Воскресенье, 16 Февраля 2014, 15:57 | Сообщение # 5609
    почти ветеран
    Сейчас нет на сайте
    Как вращать объект по оси Y Z когда зажата левая кнопка мыши на объекте с тегом "Button_Rotation"?
    Вот так делаю проверку на нажатие и проверки по тегу,
    Код
    void Update() {

       if (Input.GetMouseButtonDown (0)) { //если нажата левая кнопка мыши (тапнули пальцем на андроиде/айосе), то  
        RaycastHit hit; //создаем новую точку соприкосновения луча (назовем это так, хотя возможно правильно это обозвать подругому)  
        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); //и сам луч, который будет направлен от курсора мыши вглубь экрана  
        if (Physics.Raycast (ray, out hit, Mathf.Infinity)) { //если созданный луч соприкоснулся с объектом  
         if (hit.collider.name == "Button_Rotation") {  
          Debug.Log ("Rotation");

         }

         }
        }
       }

    Если использую transform.Rotate(10,0,0); то но сразу резко вращает и только один раз! Хоть и в коде написано пока зажата левая кнопка мыши.
    Мне подсказали использовать Quaternion.Slerp(); но я не пойму что то .
    Кто подскажет?


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    VoreshДата: Воскресенье, 16 Февраля 2014, 17:14 | Сообщение # 5610
    частый гость
    Сейчас нет на сайте
    Подскажите пожалуйста, как программно отключить скрипт в юнити?
    В скрипт референс не нашел функции. Скрипт висит на объекте, сам объект отключать не вариант, как и делать пустой дочерний.
    NEBRДата: Воскресенье, 16 Февраля 2014, 18:33 | Сообщение # 5611
    почти ветеран
    Сейчас нет на сайте
    Laush, чтобы поворот был плавным, умножай его на Time.deltaTime. Про кватернионы почитай у ПогКсерта и на хабре статья "Каверзные кватернионы".
    Voresh, ну вот так наппример:

    Код

    public MyScript myScript; // в эту ячейку перетянешь в редакторе объект с нужным тебе скриптом

    void Start() {

    myScript.SetActive(false);

    }


    King Size #Gamiron12
    LaushДата: Воскресенье, 16 Февраля 2014, 20:21 | Сообщение # 5612
    почти ветеран
    Сейчас нет на сайте
    NEBR, Умножал, та же ситуация, работает только единожды... Если сделать без проверки на нажатие и повесить на объект который нужно вращать, то конечно вращает. А с этой проверкой не хочет. Что делать....
    Вот смотри
    Код
    using UnityEngine;
    using System.Collections;

    public class RotationCar : MonoBehaviour {

        void Update() {

        if (Input.GetMouseButtonDown (0)) { //если нажата левая кнопка мыши (тапнули пальцем на андроиде/айосе), то   
         RaycastHit hit; //создаем новую точку соприкосновения луча (назовем это так, хотя возможно правильно это обозвать подругому)   
         Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); //и сам луч, который будет направлен от курсора мыши вглубь экрана   
         if (Physics.Raycast (ray, out hit, Mathf.Infinity)) { //если созданный луч соприкоснулся с объектом   
          if (hit.collider.name == "Button_Rotation") {   
           Debug.Log ("Rotation");
           transform.Rotate(10*Time.deltaTime,0,0);
          }

          }
         }
        }
       }


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата


    Сообщение отредактировал Laush - Воскресенье, 16 Февраля 2014, 20:22
    VoreshДата: Воскресенье, 16 Февраля 2014, 20:33 | Сообщение # 5613
    частый гость
    Сейчас нет на сайте
    NEBR, Что за тип такой, MyScript? У меня такого нету.
    lentinantДата: Воскресенье, 16 Февраля 2014, 20:44 | Сообщение # 5614
    ленивый программист
    Сейчас нет на сайте
    Цитата Voresh ()
    Что за тип такой, MyScript? У меня такого нету.

    Вы уверены, что вам стоит программировать? Это просто пример класса, там могло быть любое название.
    Кстати, скрипт также можно отключать через enabled, правда, он просто не будет обновляться через Update (другие функции будут работать).


    Когда-то тут будут ссылки на крутые проекты. Или нет.
    seamanДата: Воскресенье, 16 Февраля 2014, 22:47 | Сообщение # 5615
    старожил
    Сейчас нет на сайте
    Цитата
    работает только единожды.

    Естественно. Вы же проверяет на нажатие. А оно проходит только один раз.
    Замените
    if (Input.GetMouseButtonDown (0))
    на
    if (Input.GetMouseButton (0))
    LaushДата: Воскресенье, 16 Февраля 2014, 23:12 | Сообщение # 5616
    почти ветеран
    Сейчас нет на сайте
    seaman, тьфуу ты... спасибо! happy

    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    NEBRДата: Понедельник, 17 Февраля 2014, 13:35 | Сообщение # 5617
    почти ветеран
    Сейчас нет на сайте
    Laush, да, а в случае мобильного девайса

    if (Input.GetMouseButtonDown (0)) можно заменить на (myTouch.phase = TouchPhase.Began) - нажали один раз
    if (Input.GetMouseButton (0)) можно заменить на (myTouch.phase = TouchPhase.Stationary) - удерживаем палец на экране

    Цитата Voresh ()
    NEBR, Что за тип такой, MyScript? У меня такого нету.

    да, выше верно сказали что это название класса. Так должен называтся тот скрипт, который нужно отключить


    King Size #Gamiron12
    VladimirPutinДата: Вторник, 18 Февраля 2014, 10:16 | Сообщение # 5618
    почетный гость
    Сейчас нет на сайте
    Раньше не пользовался unity, сейчас узнал о поддержке 2d и решил посмотреть. Есть ли уроки по 2d unity на русском?
    lentinantДата: Среда, 19 Февраля 2014, 06:43 | Сообщение # 5619
    ленивый программист
    Сейчас нет на сайте
    Объясните мне, как нормально работают LookRotation и FromToRotation в 2D играх, а то эти функции вообще неадекватно себя ведут. Как и LookAt. Какие еще есть методы повернуть спрайт к необходимому трансформу для 2D игры?

    И еще вопрос: навесил на "врага" скрипт
    Код
    private Transform player;
      public float speed = 4;
      // Use this for initialization
      void Start () {
       player = GameObject.FindGameObjectWithTag ("Player").transform;
      }
       
      // Update is called once per frame
      void Update () {
       transform.rotation = Quaternion.FromToRotation (transform.position, player.position);
       rigidbody2D.velocity = transform.up * speed;
       //Debug.Log (rigidbody2D.velocity);
      }

    Ладно еще, с учетом первого вопроса, враг не поворачивается к игроку, но я абсолютно не могу понять, почему враг при этом тупо стоит на месте. При этом, в логе rigidbody2D.velocity не равно нулю. Мистика.


    Когда-то тут будут ссылки на крутые проекты. Или нет.
    lolskillДата: Среда, 19 Февраля 2014, 08:24 | Сообщение # 5620
    почетный гость
    Сейчас нет на сайте
    есть персонаж куб платформер, под ним тоже куб 2d. Персонаж проваливается и улетает вниз. Что нужно сделать
    Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос-[ответ] по Unity (Задаём свои вопросы)
    Поиск:

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