Главная | Форум | Мой профиль | Выход | RSS
Меню сайта
Мини-чат
200
Наш опрос
Расширение спектра деятельности. Тоесть принимать и по возможности помогать не только Ultimate 3D
Всего ответов: 298
Кабинет

Поиск
Наши друзья
  • Официальный cайт U3D
  • Лучший сайт по GM
  • Сайт по геймдеву
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Реклама:

    Главная » Статьи » Начало

    Начало всему, учимся с нуля!
    Статья: “Начало всему, учимся с нуля!”.  
      В этой статье я дам самое подробноё описание движка Ultimate 3D. Если вы до этого были просто ГМ-щиком, то после этой статьи вы станете настоящим ультиматорам! Если вы хоть раз делали 2Д игру жанра ТДС (вид с верху) или понимаете принцип ТДС, то вы в лёгкую поймете как строить игры на этом движке!
      Ну переедем к делу! Сейчас создайте папку с вашим обучениям (например’Experement0’). В ней создайте три папки: ‘gfx’, ‘models’, ‘effects’. Теперь сохраните там ваш исходник (он должен быть пуст!).
    Теперь скачайте АРХИВ ФАИЛОВ (лицензия, опции, 2е картинки, эффекты, и длл). Разархивируйте этот архив в свою папку
    Затем нажмите в своём исходнике: скрпты=>импортировать скрипты=>и выберите набор скриптов из скаченного архива(Ultm3d_scriptS.gml).
    Картинки киньте в папку ‘gfx’!
    Ну начнём писать скрипты!
    Создайте объект “control”, в создание поставьте скрипт:
    BG_r=0;
    BG_g=0;
    BG_b=0;
    show_cursor=false;
    display_help=false;
    Init();
    SetFont("Arial",0,12,0,255,255,255,255);
    LoadBackground("gfx/nebo.jpg");
    SetAmbient(50,50,50,0,0);

    Так, теперь скачайте рисунок неба __. И поставьте его к себе в папку ‘gfx’. (Рисунок должен называться “nebo”, и иметь формат ‘jpg’.)
    Если хотите его заменить то в эту строчку- LoadBackground("gfx/nebo.jpg");
    впишите путь к своему рисунку за место этого "gfx/nebo.jpg"
    В степи:
    external_call(global.u3d_present);
    external_call(global.u3d_transmit_controller_information,BG_r,BG_g,BG_b,show_cursor);
    external_call(global.u3d_render);

    Конец игры:
    external_call(global.u3d_cleanup);
    Так с основой разобрались!
    Теперь создадим объект камеры. Назовем его ‘camera’. В создании объекта пишем:
    z=6;//высота на которой находится камера
    view=90;//угол зрения
    height=9;//высота камеры
    mouse_speed=0.1;//чувствительность мыши
    speedx=0.2;//скорость движения
    MoveCamera();//прописываем камеру

    В степи пишем:
    MoveCamera();//степавский скрипт камеры
    //вращение камерой при помощи мышки
    GetMousePos();//вытаскиваем переменные мыши из движка
    rotx+=(global.mouse_y-display_get_height()/2)*mouse_speed;//меняем угл осиХ на сдвиг мыши от центра по оси У
    roty+=(global.mouse_x-display_get_width()/2)*mouse_speed ;//меняем угл осиУ на сдвиг мыши от центра по оси Х
     SetMousePos(display_get_width()/2,display_get_height()/2);//ставим мышь в центр
    //ставим ограничение вращения камеры вверх-вниз(вращение по осиХ)
    if(rotx<-60){
      rotx=-59;
    }
    if(rotx>60){
      rotx=59;
    }

    С камерой всё! Теперь можете посмотреть что вышло!
    Ну вот, основу вы создали! Теперь загрузим модель пола, для ориентировки. 
    Создаём объект с названием “island”. И в его создании пишем:
    file='models\island.3ds';//путь к самой модели.
    z=-60;//ставим высоту на которой наша земля будет находится. (-60 потаму что эта модель не отцентрована)
    scalx=1.9;//скалинг по оси Х (то есть меньше 1-сжимаем, более-растягиваем)
    scaly=1.9;//скалинг по оси У
    scalz=1;//скалинг по оси Z
    LoadMesh();//загрузка модели

    Теперь это в степ:
    Step();//Это что бы модель всё время обновлялась (короче обязательно!)
    Это в уничтожения:
    Destroy();//что бы сама модель тоже удалилась, если удалится сам объект.
    Смотрим что вышло!
    Осматриваться можно а ходить нельзя? Так давайте заставим камеру ходить!
    Есть такой скрипт, называется “Move()”. Это передвижение в направление. Move имеет три аргумента :
    1)Угол движения по оси Х.
    2)Угол движения по оси У(так же как direction!затрагивает тока х, у!).
    3)Скорость
    Допустим введём вот что в степ камеры – Move(-90,0,8). Получится что камера начнёт двигаться в верх! 
    Вот так вот в низ- Move(90,0,8). 
    Вот так- Move(0,40,8). –пойдёт в сторону под углом 40градусов.
    Но думаю ясно…
    Если вы уже вводили Move() в степ камеры то уберите его, это была демонстрация скрипта.
    Поставьте это в степ:
    if(keyboard_check(vk_up)){//если нажата кнопка вверх
    Move(rotx,roty,speedx);//движемся туда куда смотрит камера
    }

    Смотрите! только под землю на залатайте!
    Теперь можно латать туда куда смотрит камера. Теперь внимание- вот вам задача, заделайте так что бы при нажатие кнопки вниз, камера летела назад.
    Подсказка: в Move(rotx,roty,speedx); нужно в первый или второй аргумент добавить или ‘-30’, или ‘-55’, или ‘-270’, или ‘-180’, или ‘-90’, или ’+80’. 
    Это важная задачка, и не надо делать всё проверенным методом тыка! Здесь додуматься надо…
      Не знаю вышло у вас или нет. Но надеюсь что да!
    Далее в степ допишите:
    if(keyboard_check(vk_left)){//если нажата кнопка влево
    Move(rotx,roty-90,speedx);//движемся в лево
    }

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

      Ну вот вы и научились основам! Есть ещё вам задачка, загрузить модель в формате ‘3ds’, в ваш проЭкт. Подсказка: island, это тоже 3Д модель. По её образцу можно загрузить модель в игру. Только не забудьте про переменную z, в ней напишите z камеры!.

    Вот исходник к статье

    Автор: ZXC76


    Категория: Начало | Добавил: ZXC76 (09.06.2009) | Автор: zxc76
    Просмотров: 2557 | Комментарии: 19 | Теги: первый урок, загрузка модели., начало | Рейтинг: 5.0/2
    Всего комментариев: 161 2 »
    15 BARS  
    0
    Спасибо!

    16 ZXC76  
    0
    Не за что)

    14 Nazir  
    0
    И вот я здесь после своего первого комента(31.10.2009 13:23), прошло столько времени и я научился многому, как работать с двигами, как работать с графикой. Вот теперь мне пора юзать Ultimate по полной!!!!!!!!! biggrin

    12 Nazir  
    0
    А где русскую справку можно найти?

    13 ZXC76  
    0
    Наверно в меню сайта (Help 2.1)...

    10 Morkus  
    0
    В вашем исходнике тож самое(

    11 ZXC76  
    0
    Если такая же ошибка в исходники- значит у тебя что то с компом(((
    Возможные причины:
    Установлена система виста или линакс
    Не установлена\или не та видо карта\драйвер. - это можно проверить запустив любую другую 3Д игру...
    Или у тебя ГМ8, хотя в ГМ8 такого быть не должно…

    9 Morkus  
    0
    ОШИБКА

    ___________________________________________
    ERROR in
    action number 1
    of Create Event
    for object camera:

    In script MoveCamera:
    Error in code at line 1:
    // MoveCamera()// This function should be called in the step event of every object // that's used as camera.u3d_type=15;InitializeVariable("number",0);InitializeVariable("actual_aspect",0);InitializeVariable("render_target",0);InitializeVariable("v_left",0);InitializeVariable("v_top",0);InitializeVariable("v_width",view_wport[0]);InitializeVariable("v_height",view_hport[0]);InitializeVariable("view",90);InitializeVariable("height",0);InitializeVariable("falling",0);InitializeVariable("falling_speed",0);InitializeVariable("follow",0);InitializeVariable("perspective",0);InitializeVariable("distance",10);InitializeVariable("rotatex",0);InitializeVariable("rotatey",0);InitializeVariable("min_range",0.5);InitializeVariable("max_range",100000);InitializeVariable("z",0);InitializeVariable("rotx",0);InitializeVariable("roty",0);InitializeVariable("rotz",0);InitializeVariable("rotzprevious",0);// Validate the values of the variablesv_left=max(v_left,0);v_top=max(v_top,0);if(v_width==0 && v_height==0){ v_width=view_wport[0]-v_left; v_height=view_hport[0]-v_top;}if(min_range<=0){ min_range=0.5;}if(max_range<=min_range){ max_range=100000.0;}// Calculate the gravityzprevious=z;if(falling){ z+=falling_speed; falling_speed-=global.gravitation;}// Follow the given object if requestedif(follow!=0 && perspective==0){ rotx=-point_direction(0,0,point_distance(x,y,follow.x,follow.y),z+height-(follow. z+follow.height)); roty=-90+point_direction(0,0,x-follow.x,y-follow.y); Move(0,roty,(point_distance(x,y,follow.x,follow.y)-distance)/distance);}if(follow!=0 && perspective==1){ falling=0; falling_speed=0; x=follow.x; y=follow.y; z=follow.z+follow.height-height; rotx=follow.rotx+rotatex; roty=follow.roty+rotatey; Move(rotx,roty,-distance);}if(follow!=0 && perspective==2){ var temp,tempx,tempy,tempz; falling=0; falling_speed=0; tempx=x; tempy=y; tempz=z; x=follow.x; y=follow.y; z=follow.z+follow.height-height; rotx=follow.rotx+rotatex; roty=follow.roty+rotatey; Move(follow.rotx+rotatex,follow.roty+rotatey,-distance); temp=x; x=tempx; tempx=temp; temp=y; y=tempy; tempy=temp; temp=z; z=tempz; tempz=temp; x+=(tempx-x)*0.1; y+=(tempy-y)*0.1; z+=(tempz-z)*0.1; rotx=-point_direction(0,0,point_distance(x,y,follow.x,follow.y),z+height-(follow. z+follow.height)); roty=-90+point_direction(0,0,x-follow.x,y-follow.y);}external_call(global.u3d_update_camera_transformation,number,x,y,z+height,rotx,r oty,rotz);external_call(global.u3d_update_camera_projection,number,min_range,max_range,view ,v_left,v_top,v_width,v_height,actual_aspect,render_target);

    at position 2538: Unknown variable u3d_update_camera_transformation


    8 Bedndarc  
    0
    при движении назад, можно и третий аргумент использовать, выставив скорости отрицательное значение.

    6 Trailg  
    0
    Вроде так всё понятно... но давайте продолжение!)желательно где описываеца , как сделать так чтобы например камера не проваливалась в сам остров при движении... Или как сделать 3д объект...заставить его двигаца :)

    7 ZXC76  
    0
    "желательно где описываеца , как сделать так чтобы например камера не проваливалась в сам остров при движении"
    Это уже есть но там толька за место острова, ландшафт в 2х частях...

    4 klimmer  
    0
    что значит фраза "В степи пишем:"

    5 ZXC76  
    0
    klimmer: Степ= Событии Шага= Step

    3 ZXC76  
    0
    DarkSentiel, скажи в каких местах. Для того что бы я подправил статью.

    2 DarkSentiel  
    0
    Не очень понятно. Но и на том спасибо.

    1-10 11-11
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]

    Школа Ultimate3D 2009-2010 год