Вопрос-[ответ] по 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 |
заслуженный участник
Сейчас нет на сайте
| дааа это уже реально подумать надо
|
|
| |
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, я понял, просто хотел чтобы кто то убрал ненужный код. Чтобы никаких кнопок не было на экране. Так у тебя даже подписано в коментах "кнопка". Да 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 |
постоянный участник
Сейчас нет на сайте
| Мне надо.
|
|
| |
|