Четверг, 16 Января 2025, 22:48

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • pixeyeДата: Воскресенье, 11 Декабря 2011, 22:12 | Сообщение # 1241
    Red Winter Software
    Сейчас нет на сайте
    Quote (iXerox)
    pixeye, я хочу, чтобы.... Короче говоря раз в 3 секунды меняются текстуры. В один шаг смены текстуры можно увеличить счет только один раз. Если же я не жму на то ход про пускается и я могу величине счет через ход. Суть игры true/false. Задаются вопросы:
    - 2+2=4?
    Если я считаю, что это утверждение верно, то я жму на куб, если считаю, что неверно, то пропускаю ход. Если он ответ верен, то +1, если неверен, то -1, если я пропустил ход, то 0 и т.д.
    Как это реализовать?


    Сделай отдельно проект, добавь этот скрипт и запусти.
    Обязательно в инспекторе добавь значение 3 к размеру массива correctAnswers иначе будет ошибка.

    Этот код отвечает на твой вопрос и впринципе вхож в ту структуру кода что ты показывал раннее, хотя она на мой взгляд и неуклюжа, но видимо тебе так будет проще.

    Все действия я закомментировал, однако если ты не поймешь - то постараюсь подробно ответить на твои вопросы.
    Поймешь этот код - легко реализуешь это приминительно к кубам.

    Code
    var answered = false; //отвечали ли мы вообще;
    var isTrue = false; // положительный или отрицательный ответ мы дали?
    var correctAnswers: boolean[]; // массив правильных ответов на твои вопросы
    var score: int; // счет

    function Start ()   
    {    
    correctAnswers[0]=true;     // расставляем ответы на твои вопросы в массиве   
    correctAnswers[1]=false;
    correctAnswers[2]=true;

           check(); // вызываем функцию проверки
           yield new WaitForSeconds (3); // ждем 3 сек
           checkResult(isTrue,correctAnswers[0]); // проверяем результат с первым вопросом  ( значением из массива )   
           check(); // повторяем все по новой
           yield new WaitForSeconds (3);   
           checkResult(isTrue,correctAnswers[1]); // только изменяем вопрос
           check();
           yield new WaitForSeconds (3);   
           checkResult(isTrue,correctAnswers[2]);
           
    }   

    function check(){         
    var timer = 3.0f;    // таймер стоит на 3 сек
    answered = false;    // сбрасываем значение ответа
    while(timer>0.0f){    // пока таймер больше нуля выполняем следующий отрезок кода
    timer -=Time.deltaTime;   // уменьшаем значение таймера чтобы цикл не длился вечно
    if (!answered&& (Input.GetMouseButtonUp(0))){  // если ответа еще нет и отжата левая кнопка мыши то
    answered = true;  // ответ дан вообще
    isTrue = true;    // конкретный ответ на вопрос
    print(isTrue);    // дебаг
    return;           // убиваем функцию
    }                 //
    yield 0;          //с какой периодичностью выполняется цикл
    }                 //конец цикла
    isTrue = false;  // если за весь цикл так и не был дан ответ то он по умолчанию отрицателен
    print(isTrue);   // дебаг
    }

    function checkResult( playerAnswer: boolean,  realAnswer: boolean){   //функция проверки результата сюда вводим ответ игрока и вторым параметром ставим значение из массива

    if(playerAnswer==realAnswer){    // если ответ игрока совпадает с ответом из массива то            
    score+=1;                       // добавляем одно очко
    }
    else                            // если нет   
    score-=1;                         // отнимаем
    print("myScore is: "+score);          // дебаг
    }


    Общий совет - программирование это логика. Мозг так устроен, что сначала выдает много бреда и нужно время чтобы сформулировать точный запрос,ответ,решение. Не городи кучу переменных в которых сам можешь запутаться. Напиши код в псевдоварианте обычными словами на бумаге.
    Подумай как можно его улучшить. Потом уже пиши. + из кода видно, что многие вещи такие как циклы, возвраты значений, работа с массивами тебе знакома совсем мало. Почитай общие уроки по программированию - они примерно одинаковы для всех языков. Поймешь общие правила - легче будет писать комплексные программы.


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



    Сообщение отредактировал pixeye - Воскресенье, 11 Декабря 2011, 22:17
    iXeroxДата: Воскресенье, 11 Декабря 2011, 22:44 | Сообщение # 1242
    частый гость
    Сейчас нет на сайте
    спасибо. Я правильно понял, что если я напишу score+=1, то он прибавит 1 только один раз? А второй раз прибавит только при втором утверждении, к примеру, 4*4=16.
    Если у меня Score - GUIText, то правильно будет:
    Code

    var ScoreGUI : GUIText;
    var score = 0;

    function OnMouseUp ()
    {
    if(2+2==4)
    {
    score+=1;
    ScoreGUI.text = "" + score;
    }
    }

    Код упростил т.к. главное суть.

    Добавлено (11.12.2011, 22:19)
    ---------------------------------------------
    pixeye, Сейчас гляну.

    Добавлено (11.12.2011, 22:44)
    ---------------------------------------------
    pixeye, спасибо. Для меня это сложновато, но попробую сам разобраться.... Еще раз большое спасибо за помощь.


    Сообщение отредактировал iXerox - Воскресенье, 11 Декабря 2011, 23:08
    pixeyeДата: Воскресенье, 11 Декабря 2011, 23:01 | Сообщение # 1243
    Red Winter Software
    Сейчас нет на сайте
    Quote (iXerox)
    pixeye, спасибо. Для меня это сложновато, но попробую сам разобраться.... Еще раз большое спасибо за помощь.

    Правильно - то что для тебя сложно, но ты допираешь сам - в мозгу остается считай навсегда;-)
    Однако если совсем будет туго - спрашивай как что работает;-)

    Добавлено (11.12.2011, 23:01)
    ---------------------------------------------

    Quote (RipDev)
    Не могу понять почему я не могу выставить точку в локальных координатах куба.


    Так;-) Давай подробно, что ты делаешь - а то не совсем пока понятно. Описывай.

    Я так понимаю ты хочешь изменить одно значение в векторе? Или что?


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

    systemДата: Понедельник, 12 Декабря 2011, 00:07 | Сообщение # 1244
    заслуженный участник
    Сейчас нет на сайте
    такой вот вопрос: Если я создал гонки на юнити (делал их для пк), но захотелось погамать на андроиде, скомпилирую я её, а управление как осуществляться будет? В данном случае у меня есть только туториал по созданию гонок, я в нём разбераюсь.

    Добавлено (12.12.2011, 00:07)
    ---------------------------------------------
    тяжело ли будет сделать повороты аксилерометром?

    pixeyeДата: Понедельник, 12 Декабря 2011, 00:27 | Сообщение # 1245
    Red Winter Software
    Сейчас нет на сайте
    Quote (system)
    такой вот вопрос: Если я создал гонки на юнити (делал их для пк), но захотелось погамать на андроиде, скомпилирую я её, а управление как осуществляться будет? В данном случае у меня есть только туториал по созданию гонок, я в нём разбераюсь


    Нужно момент управления отдельно прописать. Либо отдельный проект специально под андроид, либо код изначально составлять с учетом разных платформ, благо в юнити есть средства позволяющие отслеживать с какой платформы работаете.

    На вскидку варианта два - аксилирометр или виртуальный джойстик на экране.

    Quote (system)
    тяжело ли будет сделать повороты аксилерометром?


    Вообще не сложно, однако чтобы он максимально гладко и правильно работал придется слегка помучаться.
    В самом базовом варианте ответы найти можно здесь
    КЛИК


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



    Сообщение отредактировал pixeye - Понедельник, 12 Декабря 2011, 00:28
    systemДата: Понедельник, 12 Декабря 2011, 00:34 | Сообщение # 1246
    заслуженный участник
    Сейчас нет на сайте
    спасибо, хочу в стандартный тутор впихнуть пару трасс и сделать управление аксиллерометром
    pixeyeДата: Понедельник, 12 Декабря 2011, 00:40 | Сообщение # 1247
    Red Winter Software
    Сейчас нет на сайте
    Quote (system)
    спасибо, хочу в стандартный тутор впихнуть пару трасс и сделать управление аксиллерометром


    у меня самая большая проблема с аксилирометром возникала при центровке. Если я правильно слово употребляю ( опыт с аксилирометром был только один раз ). Проблема в том, что нужно относительно какого то положения изначального крутить свой девайс.


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

    systemДата: Понедельник, 12 Декабря 2011, 00:41 | Сообщение # 1248
    заслуженный участник
    Сейчас нет на сайте
    дааа это уже реально подумать надо dry
    andarkyДата: Понедельник, 12 Декабря 2011, 11:09 | Сообщение # 1249
    старожил
    Сейчас нет на сайте
    а я опять с своим вопросом:
    Как сделать плавное передвижение по WayPoints?
    Я убрав вообще все коллайдеры получаю тот же результат - камера тормозит не долетев до цели

    Code

    function Update ()
    {
    var rotation = Quaternion.LookRotation(target.position - transform.position);
        transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping);

        transform.Translate(Vector3.forward*0.6);
    }


    что не так?



    Моя страничка по дизайну
    GameDev//Design//3D
    Ютубчик
    pixeyeДата: Понедельник, 12 Декабря 2011, 11:15 | Сообщение # 1250
    Red Winter Software
    Сейчас нет на сайте
    Quote (andarky)
    Как сделать плавное передвижение по WayPoints?

    Как я понял тебе нужен плавный твин
    Клик!
    Я уже об этом писал - если не разберешься пиши.


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

    DusklyДата: Понедельник, 12 Декабря 2011, 20:33 | Сообщение # 1251
    Rush Games
    Сейчас нет на сайте
    Вот есть js скрипт:
    Code
    var waypoint : Transform[];
    static var speed : float = 5;
    private var currentWaypoint : int;

          function Update ()   
          {
              if(currentWaypoint < waypoint.length)
              {
                  var target : Vector3 = waypoint[currentWaypoint].position;
                  var moveDirection : Vector3 = target - transform.position;
                  var velocity = rigidbody.velocity;

                  if(moveDirection.magnitude < 1)
                  {
                      currentWaypoint++;
                  }
                  else
                  {
                      velocity = moveDirection.normalized*speed;
                  }
              }

              rigidbody.velocity = velocity;
          }  

    Кто поможет добавить сюда плавный поворот, наведение на следующую точку (вейпоинт)и заданную скорость. Заранее спасибо. Вообще скорость не обязательно но желательно)) с меня естественно +++

    Добавлено (12.12.2011, 20:19)
    ---------------------------------------------
    ап, плз помогите!!

    Добавлено (12.12.2011, 20:33)
    ---------------------------------------------
    Есть код замедления времени на js:
    Code
    private var a=1.0; //скарость времени   
    private var b="Pauza";//просто строка   
    var c:AudioClip;//музончик   
    function Start () { //Делаем при старте   
    audio.loop=true;//делаем постоянное играние звука   
    audio.clip=c;//выбираем звук   
    audio.Play();//играем звук   
    }   
    function Update () { //делаем постоянно   
    if(a==0.0) b="Start";//это надпись у кнопки меняем   
    else b="Pauza";//и это тоже   
    Time.timeScale=a;//масштабируем время   
    audio.pitch = a;//и музычку   
    }   
    function OnGUI () { //ГУИ   
    a=GUI.HorizontalSlider(Rect(10,10,100,20),a,0.0,1.0); //слайдер   
    if(GUI.Button(Rect(10,30,100,50),b)) //кнопка   
    {   
          if(a==0.0)  a=1.0; //изменяем скорость   
          else a=0.0; //и это тоже   
                 
    }   
    }

    И есть код который замедляет время по нажатию левого CTRL, и мне надо это вставить в тот код. Просто я могу ошибочно вставить и работать не будет. От вас требуется вместо всяких кнопок на экране как в том скрипте и вставить этот скрипт вместо какого то кусочка кода туда):
    Code
    if (Input.GetKey (KeyCode.LeftControl) Time.timeScale=0.5f;



    Разрабатываеться:
    флеш игра для соц. Сетей (Бои друзей) - временное название!
    3д игра (пока без названия)


    Сообщение отредактировал Duskly - Понедельник, 12 Декабря 2011, 20:34
    RipDevДата: Понедельник, 12 Декабря 2011, 21:52 | Сообщение # 1252
    гейм-дизайнер
    Сейчас нет на сайте
    Quote (Duskly)
    ап, плз помогите!!

    Добавлено (12.12.2011, 20:33)
    ---------------------------------------------
    Есть код замедления времени на js:
    Code
    private var a=1.0; //скарость времени   
    private var b="Pauza";//просто строка   
    var c:AudioClip;//музончик   
    function Start () { //Делаем при старте   
    audio.loop=true;//делаем постоянное играние звука   
    audio.clip=c;//выбираем звук   
    audio.Play();//играем звук   
    }   
    function Update () { //делаем постоянно   
    if(a==0.0) b="Start";//это надпись у кнопки меняем   
    else b="Pauza";//и это тоже   
    Time.timeScale=a;//масштабируем время   
    audio.pitch = a;//и музычку   
    }   
    function OnGUI () { //ГУИ   
    a=GUI.HorizontalSlider(Rect(10,10,100,20),a,0.0,1.0); //слайдер   
    if(GUI.Button(Rect(10,30,100,50),b)) //кнопка   
    {   
          if(a==0.0)  a=1.0; //изменяем скорость   
          else a=0.0; //и это тоже   
                 
    }   
    }

    И есть код который замедляет время по нажатию левого CTRL, и мне надо это вставить в тот код. Просто я могу ошибочно вставить и работать не будет. От вас требуется вместо всяких кнопок на экране как в том скрипте и вставить этот скрипт вместо какого то кусочка кода туда):
    Code
    if (Input.GetKey (KeyCode.LeftControl) Time.timeScale=0.5f;

    Написал то, ставь в function Update ().
    Без знания яп, я даже не представляю как можно заниматься с юнити, это тебе не конструктор.


    Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
    DusklyДата: Понедельник, 12 Декабря 2011, 22:19 | Сообщение # 1253
    Rush Games
    Сейчас нет на сайте
    RipDev, я понял, просто хотел чтобы кто то убрал ненужный код. Чтобы никаких кнопок не было на экране.

    Добавлено (12.12.2011, 22:19)
    ---------------------------------------------
    Так что??? кто поможет?((



    Разрабатываеться:
    флеш игра для соц. Сетей (Бои друзей) - временное название!
    3д игра (пока без названия)
    RipDevДата: Вторник, 13 Декабря 2011, 17:48 | Сообщение # 1254
    гейм-дизайнер
    Сейчас нет на сайте
    Duskly, а ГУИ тебе ни о чем не говорит?
    Quote (RipDev)
    function OnGUI () { //ГУИ   
    a=GUI.HorizontalSlider(Rect(10,10,100,20),a,0.0,1.0); //слайдер   
    if(GUI.Button(Rect(10,30,100,50),b)) //кнопка   
    {   
          if(a==0.0)  a=1.0; //изменяем скорость   
          else a=0.0; //и это тоже   
                 
    }   
    }

    Добавлено (13.12.2011, 17:48)
    ---------------------------------------------

    Quote (Duskly)
    RipDev, я понял, просто хотел чтобы кто то убрал ненужный код. Чтобы никаких кнопок не было на экране.

    cranky
    Так у тебя даже подписано в коментах "кнопка". Да Duskly, прям слов нет,(хотел написать много букав да лень, здесь ничего не поможет).


    Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
    M1ghtMortalДата: Вторник, 13 Декабря 2011, 17:57 | Сообщение # 1255
    участник
    Сейчас нет на сайте
    Duskly, Не думай что здесь за тебя будут делать все. Тебе помогут если ты будешь сам хотя бы пытаться что-то сделать, и это у тебе не будет получаться. Если хочешь что бы за тебя писали скрипты, нанимай программиста или ищи энтузиаста, который будет тебе просто так скрипты писать.


    Java/C++/Unity(C#) Programmer.
    Мой блог MightMortal.RU
    SnakeRДата: Вторник, 13 Декабря 2011, 23:02 | Сообщение # 1256
    постоянный участник
    Сейчас нет на сайте
    Где то видел урок про поинт энд клик систему передвижения ГГ, может кто даст ссылку =)

    Unity3D Developer
    Ваш лучший помощник при разработке в Unity3D
    EyeДата: Среда, 14 Декабря 2011, 13:50 | Сообщение # 1257
    заслуженный участник
    Сейчас нет на сайте
    http://gcup.ru/publ/unity3d_dvizhenie_v_storonu_kursora/1-1-0-291

    ICQ: 422190728,
    E-Mail: funnyalien@yandex.ru,
    Jabber: funnyalien@jabber.ru,
    Steam: funnyalienvalentine,
    Twitter: MrFunnyAlien,
    Skype: happyconsole,
    ВКонтакте: vk.com/twinemen,
    Мобильный: +79199212414.


    Сообщение отредактировал Eye - Среда, 14 Декабря 2011, 13:51
    lokinamДата: Среда, 14 Декабря 2011, 15:33 | Сообщение # 1258
    постоянный участник
    Сейчас нет на сайте
    А можно purebasic как нибудь подключить к unity&
    RipDevДата: Среда, 14 Декабря 2011, 17:42 | Сообщение # 1259
    гейм-дизайнер
    Сейчас нет на сайте
    Quote (lokinam)
    А можно purebasic как нибудь подключить к unity&

    Нет. Даже если возможно, то все равно нет. Просто этого никто не будет делать.


    Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
    lokinamДата: Среда, 14 Декабря 2011, 18:22 | Сообщение # 1260
    постоянный участник
    Сейчас нет на сайте
    Мне надо.
    Поиск:

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