Академия 3D GameStudio

Здравствуйте, гость ( Вход | Регистрация )

Ответить в данную темуНачать новую тему
 
>авто-прицел, как в старых играх как duke nukem 3d и quake I
TRACER
сообщение 25.6.2010, 0:59
Сообщение #1


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Может ли кто либо мне помочь сделать так, чтобы tilt камеры у игрока смотрела вверх-вниз автоматически когда игрок спускается по спуску или поднимается, и как еще сделать так чтобы пули при стрельбе сами летели во врагов? если игрок смотрит на них (если враги на экране), чтобы очередь стрельбы была в зависимости от расстояния до врагов, сначала целиться в того кто ближе всех а потом в следующего кто подальше и т.д. Могу объяснить больше если не понятно.


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
TRACER
сообщение 25.6.2010, 15:42
Сообщение #2


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Ну не ужели так сложно реализовать? :( помогите мне немного...


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
kUkara4
сообщение 25.6.2010, 19:22
Сообщение #3


Пользователь
***

Группа: Пользователи
Сообщений: 91
Регистрация: 19.7.2008
Пользователь №: 1345



пару идей:
для тилта на спуска можно смотреть на нормал вектор под ногами, если он не перпендикулярно вверх, тогда наклонять или поднимать камеру (первое что в голову пришло)
насчет врагов, используй век_дист чтоб посчитать расстояние до каждого врага, потом сравнивай результаты и выбирай то, что меньше (тоже первое что в голову пришло)
Перейти в начало страницы
 
+Цитировать сообщение
TRACER
сообщение 25.6.2010, 19:29
Сообщение #4


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Про нормали для тилта, уже пробовал, сделал яшик который нормально ложиться на поверхность как надо, но когда пытаюсь к ней приатачить камеру, начинаеться какая-то чертовшина! камеру не варик крутить и смотрит она куда-то в небо....

Про век_дист, я тоже об этом уже думал, но как узнать что игрок смотрит на врага? и просчитывать расстояние только до тех врагов которых он видит?


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
kUkara4
сообщение 25.6.2010, 19:55
Сообщение #5


Пользователь
***

Группа: Пользователи
Сообщений: 91
Регистрация: 19.7.2008
Пользователь №: 1345



про ящик я не совсем понял, может просто оно прочитало нормал от стенки ящика, а камера всегда перпендикулярно нормалу, вот она и смотрит вверх, когда нормал горизонтально.......

про второе:
c_scan (VECTOR* pos, ANGLE* ang, VECTOR* sector, var mode);
Detects entities or other objects within a cone or sphere, and triggers their EVENT_SCAN event.

Parameters:
pos scan origin.
ang scan direction Euler angle.
sector.x horizontal scan sector, or scan cone width in degrees (360 for a full sphere)
sector.y vertical scan sector in degrees, or 0 for a circular scan cone.
sector.z scan range in quants.
mode scan mode (see below).

это из мануала копипаст, думаю так можно....

пример (тоже из мануала):
function operate() // scan nearby doors or switches for operating them
{
c_scan(camera.x,camera.pan,vector(120,0,200),SCAN_ENTS | SCAN_LIMIT);
}
...
on_space = operate;
Перейти в начало страницы
 
+Цитировать сообщение
TRACER
сообщение 25.6.2010, 20:01
Сообщение #6


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Нет, ящик не смотрел на верх, все с ним нормально, если даже так, я не мог контролировать камеру в пан да и передвигаться тоже не мог :(

Т.е. лучше всего про сканировать на большое расстояние от камеры, и если игрок видит врага и он ближе чем другие враги, первая пуля летит в него, да? Я кстати об этом думал... только как то не то... хз почему... может еще какие есть варианты?


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
kUkara4
сообщение 25.6.2010, 21:23
Сообщение #7


Пользователь
***

Группа: Пользователи
Сообщений: 91
Регистрация: 19.7.2008
Пользователь №: 1345



да именно так :) других вариантов у меня нет...........
Перейти в начало страницы
 
+Цитировать сообщение
TRACER
сообщение 25.6.2010, 22:48
Сообщение #8


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Сделайте пожалуйста пример :)


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
TRACER
сообщение 26.6.2010, 0:20
Сообщение #9


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Помощь с tilt камеры уже не нужна, сам решил все. Вот пример, если кому надо:
Код
action players_code() // attach this action to your player
{
    var movement_speed = 10; // movement speed
    VECTOR temp;
    ANGLE temp_angles;
    set (my, INVISIBLE); // 1st person player
    player = my; // I'm the player
    while (1)
    {
        my.pan -= 7 * mouse_force.x * time_step;
        camera.x = my.x;
        camera.y = my.y;
        camera.z = my.z + 50 + 1.1 * sin(my.skill44); // play with 50 and 1.1
        camera.pan = my.pan;
        camera.tilt = my.tilt;
        vec_set (temp.x, my.x); // trace 10,000 quants below the player
        temp.z -= 10000;
        temp.z = -c_trace (my.x, temp.x, IGNORE_ME | IGNORE_PASSABLE | USE_BOX) - 2; // play with 2
        temp.x = movement_speed * (key_w - key_s) * time_step;
        temp.y = movement_speed * (key_a - key_d) * 0.6 * time_step;
        c_move (my, temp.x, nullvector, IGNORE_PASSABLE | GLIDE);
        temp_angles.tilt = 0;
        temp_angles.roll = 0;
        temp_angles.pan = -my.pan;
        vec_rotate(normal, temp_angles);
        temp_angles.tilt = -asin(normal.x);
        temp_angles.roll = -asin(normal.y);
        my.tilt += 0.01 * ang(temp_angles.tilt - my.tilt); // play with 0.1
        my.roll += 0.01 * ang(temp_angles.roll - my.roll); // play with 0.1
        wait (1);
    }
}

Нужна помощь с прицеливанием, помогите пожалуйста.


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
TRACER
сообщение 26.6.2010, 6:56
Сообщение #10


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Аууу, народ помогите с прицеливанием пожалуйста!


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
TRACER
сообщение 27.6.2010, 0:37
Сообщение #11


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Ну че так сложно блин что ли? :(


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
pGema
сообщение 18.7.2010, 13:56
Сообщение #12


Активный участник
***

Группа: Пользователи
Сообщений: 39
Регистрация: 6.8.2009
Пользователь №: 1960



Может стоит попробовать измерить угол между направлением камеры и направлением trace до врага? Если угол больше 60, то враг вне поля зрения.
Перейти в начало страницы
 
+Цитировать сообщение
lukin_lehins
сообщение 18.7.2010, 18:34
Сообщение #13


Пользователь
**

Группа: Пользователи
Сообщений: 29
Регистрация: 28.12.2008
Пользователь №: 1529



c_scan тебе в помощь
Перейти в начало страницы
 
+Цитировать сообщение
TRACER
сообщение 31.7.2010, 21:26
Сообщение #14


Активный участник
***

Группа: Пользователи
Сообщений: 672
Регистрация: 15.3.2009
Из: РОССИЯ! СЕВ-КАВ ТВ РУЛИТ.
Пользователь №: 1619



Сделал, вот ссылка: Ссылка


--------------------
Мой сайт: http://badcom.at.ua/
------------------------------------------------
НЕТ ГРАНИЦ! ЕСТЬ ЛИШЬ ПРЕПЯДСТВИЯ!!!
Перейти в начало страницы
 
+Цитировать сообщение
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 5.9.2010, 2:52