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

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

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

    Главная » Статьи » Теория

    Физика машины
    Ну начнём, с начала вам в вашей игре нужно создать новый объект назовём его car.
    Теперь создайте событие: Создание(Create).
    И создайте там код, для начала нам нужно загрузить 3д модель, для этого есть переменная "file"
    file='models/car.3ds';
    Теперь нужно поставить высоту модели "z"
    z=0; // ставим в стандарте 0
    Дальше нужно настроить размеры машины с помощью "scalx, scaly, scalz"
    scalx=1;// Значение размера по X
    scaly=scalx;//  Значение размера по Y
    scalz=scalx;// Значение расмера по Z
    Если у вас модель ровная то не стоит в каждой переменной устанавливать значение, можно просто чтобы значение принималось от "scalx"
    потом устанавливаем разворот по Y "roty"
    roty=+180; // В самом редакторе 3Д моделей модель может стоять боком и по этому нужно настраивать.
    Теперь добавляем скрипт :
    LoadMesh();
    Всё с основными переменными закончили
    теперь свои:
    Начнём со скорости, назовём переменную например "sp"
    sp=0; // При создании скорость ровна нулю(машина стоит на месте)
    плюс к этой переменной надо сделать ещё 4 дополнительных "sm, st, mas, rty, dir и sc"
    sm=700; // Это сила мощности
    st=0.17; // Это сила трение
    mas=7000; // Масса
    rty=2.7; // Угол поворота
    dir=0;
    sc=0;
    вот:

    file='models/car.3ds';
    z=0;
    scalx=1;
    scaly=scalx;
    scalz=scalx;
    roty=0;
    LoadMesh();
    sp=0;
    sm=720;
    st=0.17;
    mas=720;
    rty=3;
    dir=0;

    Создаём событие Уничтожение(Destroy)
    Ставим скрипм:
    Destroy();

    Создаём событие Шаг(Ste)
    Создаём код;
    Сначала ставим скрипт:
    Step();
    Потом нам нудно поставить высоту
    z=terrain.z // высота равняется высоте поверхности на которой стоит машина
    у меня эта поверхность называется "terrain".
    Теперь перейдём к управлению, для движение есть скрипт "Move(rotx,roty,speed);"
    пишем:
    Move(0,dir,sp);
    этот скрипт для дривта rotation
    dir=rotation(dir,roty,7.6);// сам скрипт смотрите ниже
    Дальше:
    Упровление
    if keyboard_check(ord('W')){
    sp-=sc;
    }else{
    if sp<=-0.00000000000000000000000000000000001{
    sp+=st;
    if(st>=abs(sp))sp=0;
    }
    }
    if(keyboard_check(ord('A'))&&abs(sp)>+1){
    roty-=rty;
    ty+=3;
    if sp < -1{
    sp+=0.03;
    }
    }
    if keyboard_check(ord('S')){
    sp+=sc;
    }else{
    if sp>=0.00000000000000000000000000000000001{
    sp-=st;
    }
    }
    if(keyboard_check(ord('D'))&&abs(sp)>+1){
    roty+=rty;
    ty-=3;
    if sp < -1{
    sp+=0.03;
    }
    }
    //Ручник
    if keyboard_check(vk_space){
    st=1.2;
    spdir=2.1;
    if sp>=7
    roty+=rty*21
    }else{
    st=0.17;
    spdir=3;
    }
    //огроничители скорости
    if sp>=21{
    sp=21;
    }
    if sp<=-21{
    sp=-21;
    }
    }

    вот собственно и всё теперь редактирую эти переменные(скорость, масса, сила, трение и Т.Д.)
    вы сможете придать вашей тачке или любому другому наземному транспорту любую физику хоть гоночной машины, хоть грузовой.

    Вот скрипт :

    var curangle, newangle, step, dif;
    curangle = argument0;
    newangle = argument1;
    step = argument2;
    dif = abs(newangle - curangle)
    while dif = 360 dif -= 360
    if dif  180 dif = 360 - dif
    dif = abs(dif)
    temp = sin(degtorad(newangle - curangle))
    if curangle != newangle curangle += min(step,dif)temp
    by Tetrider rotation.

    Примечание: сдесь есть коекакие недароботки например когда назад едешь то машины разворачивается не так как надо.

    Следующея статья будет, а костях (кручение колёс и открывание дверей) продолжение следует ...

    Автор: ASD_W_GAMES
    Категория: Теория | Добавил: asd_w_games (25.10.2009) | Автор: ASD_W_GAMES
    Просмотров: 1584 | Комментарии: 8 | Рейтинг: 5.0/2
    Всего комментариев: 8
    8 BRESS  
    0
    Спасибо за сайт. Автору респект)

    7 Lumennes  
    0
    даешь реалистичную физику!

    5 пАк  
    0
    вот что это значит
    скорость+=сила_трения

    4 kshlkv  
    0
    да, а можно примерчик???
    так проще

    3 ZXC76  
    1
    Вот бы ещё примерчик...

    2 Lord  
    0
    sp=sp+st

    1 BOX  
    0
    что значит sp+=st, я просто хочу перенести на другой язык

    6 ZXC76  
    0
    sp=sp+st;

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

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