О сайте
  Новости сайта
  Почитать
  Утилиты
 
  Help Blitz3D
 
   

 

 

 

 

 

 

 

 

 

Записки начинающего программиста (часть 2)

Попробуем вывести прицел для оружия в центре экрана. Для этого в функцию Setup() добавим следующие строки:

pricel=LoadImage("sprites\pricel.bmp"); загружаем рисунок прицела
MidHandle pricel; назначаем начало координат картинки в её центре
MaskImage pricel,255,255,255; установим прозрачный цвет – белый

В основной цикл, после RenderWorld, вставим следующую строку:

DrawImage pricel,MouseX(),MouseY(); показать прицел

В файл GLOBAL.bb добавим строчку, где объявим указатель на рисунок прицела глобальной переменной:

Global pricel;прицел

Теперь у нас появился прицел. Попробуйте быстро перемещать мышку по экрану и вы увидете как раздваивается изображение прицела. Это происходит потому, что при быстром перемещении мыши увеличивается длина шага курсора мыши и он перемещается скачками, а вместе с ним и наш рисунок. Хотя мы постоянно возвращаем мышь в центр экрана, всё равно рывки в сторону на один шаг будут. Чтобы избавится от этого недостатка можно отвязать прицел от курсора мыши и привязать его напрямую к центру экрана.

В начале программы добавьте строки:

gx=1024:gy=768; разрешение экрана по x,y будем держать в переменных
px=gx/2:py=gy/2; координаты рисунка прицела (его центра, см. выше)

а строку Graphics3D 1024,768,32,1 заменим на Graphics3D gx,gy,32,1.

Строку DrawImage pricel,MouseX(),MouseY() заменим на DrawImage pricel,px,py, чтобы координаты рисунка не зависели от координат курсора мыши.

Теперь все работает, но тут возникает другая проблема: при изменении графического режима экрана будет меняться размер прицела. Тут есть два пути: программно менять размер прицела либо загружать спрайт прицела другого размера. Есть ещё другой способ: перед камерой разместить спрайт, на котором можно нарисовать все что угодно. Этот метод в отличии от первого не тормозит систему. По этому методу мы сделали оптический прицел, который будет рассмотрен позднее.

<<< 1 часть | 3 часть >>>

Анатолий Ковалев, Алтайский край, Романово, 19.01. 2008

 

 

     
     
     
Hosted by uCoz