Статья по Ultimate3D часть 1 Статья по Ultimate 3D Для начало вам нужно скачать Пример OldDEMO. Он _здесь_. Если вы уже его скачали, то можно приступать к чтению статьи. *************************************************** Предупреждаю заранее, всё что касается транспорта (это мех-робот, НЛО, и машина) входить в статью не будет! Так как с этой ‘ерундой’ я не разобрался! ********************************************* Для начало откройте пример OldDEMO, для 7-й версии. Пытайтесь одновременно читать и поглядывать на этот пример, так будет на много понятние. Откройте объект "camera" выберите событие создание, и увидите это:
Изучим некоторые переменные с объекта ‘camera’: Sped-Скорость ходьбы игрока fall-сам не понимаю Z-Координаты по оси z. height-Высота игрока(поставьте около 30, и робот-мех вам будет уже не нужен) mouse_speed-скорость мыши gravitation-гравитация(только она у меня не работала) follow-лучше не трогайте это distanse-не работает perspective- сам незнаю min_range- для ландшафтов max_range- для ландшафтов vehicle-Текущий транспорт, например: 0-нету 1-машина 2-нло 3-мех(робот) fog_off- непонятно vehicle-повтор, видимо авторы примера забыли что уже поставили. UnderWater-прозрачность в воде (true-вода внутри прозрачна) wait-таймер оружия MoveCamera()-скрипт специально для камеры. Его нужно ставить на все камеры.View-угол вида камеры… Зачем он нужен я и сам не знаю. Но его можно очень не плохо использовать как бинокль. Чем меньше число тем больше увеличение и меньше обозрение, и наоборот если число большое. Есть ограничение 1-300(я не хотед дальше проверять, но вообще больше 300 лучше и не ставить!) при 300 уже вон что вышло:
Степ’ы камеры: Я написал только о самом главном, из степо’в. Событие Step: Здесь важен только самый первый код: GetMousePos(); //Mousecontrol rotx+=(global.mouse_y-display_get_height()/2)*mouse_speed; if(rotx<-60) rotx=-59; if(rotx>60) rotx=59; roty+=(global.mouse_x-display_get_width()/2)*mouse_speed; SetMousePos(display_get_width()/2,display_get_height()/2); Это управление поворотом камеры. (остоьное не важно! но вообще там есть ещё условие и ещё один код то условие, это дно в море(в воде), и код это туман в воде.) Событие Begin Step: Первый код, это что-то связоное с транспортом. Как я уже написал в начале, всё что косается транспорта, я писать не стал… Второй код, это стрельба, и ограничение её скорости: if(MouseCheckButton(mb_left)) if(wait=0){ wait=30; shootid=instance_create(x,y,shoot); shootid.z=z+height;} if(wait>0) wait-=1; здесь wait, используется как таймер стрельбы. Событие End Step: MoveCamera()- это очень важная штука без неё не чего не будет!
Теперь посмотрим переменные которые нужны для загрузки 3Д модели: В создание: scalx-размеры scaly- размеры scalz- размеры file-путь к модели LoadMesh()-для любого объекта в котором будет загружаться 3д модель z-координат, также как х, или у. В степ Step()-обязательно, иначе не чего не будет. в удаление: Destroy()-чтобы 3д образ модели исчез. Если не поставить и удалить, то на карте будет останется образ модели. И всё! Теперь фокус с подгонкой размеров. Создайте две переменные ‘cyf’ и ‘caf’Это нужно поставить в создание в место значений этих переменных scalx, scaly, scalz(то есть все эти переменные должны быть равны этому):(1/cyf)*cafТеперь вы можете подгонять размеры и оставлять модель пропорциональной. Если сделать переменную cyfбольше чем один, то модель станет меньше. Если сделать переменную caf больше чем один, то модель станет больше.
Теперь о переменных, модели: roty- вращение во круг оси Y rotx- вращение во круг оси X rotz-вращение во круг оси Z x,y,z-это понятно и так… frame-фрейм, кадр анимации. first_frame-первый фрейм анимации last_frame-последний фрейм анимации