Быстрые пули

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Начинающих) / Быстрые пули

Страницы: << Prev 1 2  новая тема

Автор Сообщение

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 11-08-2006 23:55
Только вычисления поменяй на леннигдир_х

Извини, но чо то я совсем не понял, что ты написал.

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 12-08-2006 17:50
А забудь, можешь ничего не менять

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 13-08-2006 22:47
Тогда спасибо за код!!!!
зы А можешь хоть вкратце объяснить как он работает, а то не хочу его тупо вставлять. Если нет, то всё OK.

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 14-08-2006 00:10
Ладно объясню, потом копирую, всё равно такие вопросы ещё будут
Короче допустим ширина спрайта 20(пиксилей), скорость 50.
ПО встроенному алгоритму в ГМ, он пермещается так:
0-50-100. При этом после перемещения совершается проверка столкновения со стеной. ПРоверка проходит только по ширине спрайта. Т.Е. 0(проверка 0-20)-50(50-70)-100(100-120). И если стена будет в позиции 21-37, то ничего не произойдёт.
Получается, что мы сами должны делать проверку столкновения.
Так мы и делаем в цикле перемещаемся не на величину скорости, а на ширину.
Первый 0-20, потом проверка,
Второй 20-40, опять проверка
Третий 40-60, ну понятно что.
Так как мы проверили весь участок(0-50), то можно заканчивать проверку.

x_step_start=x;
y_step_start=y;//получаем координаты начала отсчёта
for (i=0; i<=speed; i+=sprite_width)//ну вот цикл начинаем(будет идти так i=0,20,40)
{
x=x_step_start+cos(degtorad(direction))*i//получаем новую х-координату(для перемещения)
y=y_step_start-sin(degtorad(direction))*i//у
//проверка столкновения
if(collision_point(x,y,stena,1,1)>0)//ну если тут чёто есть
{
etot=collision_point(x,y,stena,1,1)//то берём его id
with(etot)instance_destroy();break//сам догадайся
}
//конец проверки
}
x=x_step_start
y=y_step_start

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 14-08-2006 14:55
Спасибо!!! Но вот это
x=x_step_start+cos(degtorad(direction))*i//получаем новую х-координату(для перемещения)
y=y_step_start-sin(degtorad(direction))*i//у
я не понимаю. Это формула движения для 'x' и 'y'?

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 14-08-2006 21:00
Это мы получаем позицию x и y. Узнаем вектром направленным в направоении dir и длиной i
можно заменить на
x=x_step_start+lengthdir_x(i,direction)
y=y_step_start+lengthdir_y(i,direction)


lengthdir_x(len,dir) Возвращает горизонтальный x-компонент вектора определённый указанной длиной и направлением.
lengthdir_y(len,dir) Возвращает горизонтальный y-компонент вектора определённый указанной длиной и направлением.

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 24-08-2006 13:29
СПАСИБО ВСЕМ !!!!!

Страницы: << Prev 1 2  новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Начинающих) / Быстрые пули

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU