000114. Делаем спидометр!
Делаем спидометр!|Всем привет! Сегодня речь пойдёт об спидометрах! Мы научимся создавать без каких-либо усилий неплохие измерители скорости автомобилей.|wmysterio|wmysterio||||Хочу сказать, что методов очень много и в этом уроке я расскажу о самом популярном и моём любимом способе - привязка скорости автомобиля к углу текстуры. Первым шагом будет поиск нужных текстур. Рыская в интернете, я нашел подходящие картинки для спидометра. Эти картинки я закинул в новый TXD-архив "SPEED", который вы можете скачать отсюда. и поместил в папку models/txd. Запускаем наш Санни Билдер, и создаём новый документ. Проверим, сначала, если игрок не найден, то завершим наш поток:
Если условие сработало, то создаём новый бесконечный цикл. В нём напишем проверку: "Актёр $PLAYER_ACTOR в транспорте?". Если этот так, то загружаем наш архив текстур и сами картинки, которые она содержит:
и тут-же выгружаем её из памяти. На месте комментариев, нам понадобится ещё один цикл while. Проверка будет такая-же, как и в условие IF, в которого вложен цикл:
Следующий пункт - рисование текстур. Обе картинки в нас имеют размер 256х256, что, согласитесь, многовато. Поэтому рисовать текстуры мы будем размером 128х128. Первую текстуру мы будем рисовать опкодом "038D", так как мы не собираемся её привязывать к скорости. А вот вторую ( стрелку ) рисуем опкодом "074B", так как он может вращать картинки на экране. В нас получится следующее:
Всё, что нам осталось - определить переменную "2@". Что-бы сделать скорость реалистичнее, и спидометр показывал более-менее правильные данные, мы должны перевести скорость ( юниты ) машины в километры. Я подсчитал, что для данного спидометра нужно умножить скорость машины на 4.0. Так, как выбранная машина едет со скоростью 40 юнитов ( в игре по ровной трассе ), а в "handling.cfg" указано 160.0 км ( или миль ), юниты должны быть умножены на ( 160 / 40 ) = 4. Следовательно, мы получим:
Таким образом, мы получили скорость машины. Нам осталось отобразить её на спидометре. Если так запустить скрипт, то стрелка будет в начале смотреть в низ, где никаких цифр не указано. Следовательно нам нужно сместить угол поворота стрелки на какой-то градус. Я вычислил, что для данного спидометра смещение должно быть на 54.0 градуса:
В нас получится следующий код:
Результат:
Спидометр работает как часики, что и нужно было сделать :) На этом урок окончен. Удачи!
P.S. Вычислял нужный угол смещения стрелки я следующим кодом:
Когда мы сели в транспорт, нажимаем 1 и стрелка будет постепенно менять свой угол. Я определил, что число 54, которые показывает опкод "0AD0" и есть идеальным смещением для даного случая.|2018|1|0|32064124png
600337
400224``\|31167069
png350
289
Last updated