Движение за мышью

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

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

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

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

мастер
Группа: Сообщество GM
Сообщений: 79
Добавлено: 27-01-2007 00:31
Здравствуйте!

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

Зарание спасибо.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 27-01-2007 09:13
image_angle:= point_direction(x, y, mouse_x, mouse_y)

мастер
Группа: Сообщество GM
Сообщений: 79
Добавлено: 27-01-2007 12:19
Спасибо!

Правда еще оин вопрос возик.
Как тоже самое для изометрии сделать? Когда на восемь направлений, восемь спрайтов.

Сам я думаю, что надо сделать проверку угла поворота мыши относительно персонажа... (типа 360 градусов вокруг перса на восемь зон поделить, и для каждой зоны свой спрайт.)
Но как это сделать незнаю.

мастер
Группа: Сообщество GM
Сообщений: 79
Добавлено: 27-01-2007 15:16
Ура! Кажется сам нашел!
Вот статейка про замену спрайтов (как раз на тему моих предидущих размышлений)

Автор © 2002 r1ck14
Перевод и адаптация © 2002 Игорь Князев

В данном уроке мы рассмотрим простой способ, замены спрайта объекта в зависимости от смены направления его движения.

В событии шага (STEP) вашего объекта, поместите действие "If an expression is true" (это иконка со значком Вопроса - найти ее можно во вкладке Question) и в текстовом окне "Expression" укажите выражение: "direction>=45". За ним, поместите следующее действие "If" с инструкцией: "direction<=135". Далее, поместите действие "Change the sprite" и установите для него спрайт смотрящий "вверх".

Далее, поместите действие "If" содержащее выражение: "direction>135" и другое действия "If": "direction<=225". В действии замены спрайта объекта, выберите спрайт с направлением персонажа "влево".

Повторяем предыдущие телодвижения, помещаем инструкцию "If" содержащую: "direction>225" и "direction<=315" и заменяем спрайт на направленный "вниз".

И наконец, последняя инструкция "If": "direction > 315 || direction <45" и меняем спрайт на смотрящий "вправо". Это означает, когда 315 < направление <= 360 или 0 <= направление < 45, появится спрайт направленный вправо.

Предлагаемый вариант действий может оказаться очень полезным, например если Вы в своей игре захотите сделать так, чтобы враги следовали за главным игровым персонажем по всей комнате.

Вы можете поэкспериментировать с направлениями, только помните, что выбор направления основывается на круге (360 градусов), крайняя правая точка которого тождественна 0. Вы должны все изменяющиеся направления, сохранить в памяти.

Надеюсь, комуто еще этопоможет!
(взято из http://gmaker.h1.ru/tutorial/s_direction.html)

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 28-01-2007 08:35
Это не статья, а чудовище, убить бы того, кто это придумал.

switch (direction div (direction div 8))
begin
case 0: begin
sprite_index:= spr0
break;
end;
case 1: begin
sprite_index:= spr45;
break;
end;
...
end;

Где 8 - число возможных направлений

мастер
Группа: Сообщество GM
Сообщений: 79
Добавлено: 28-01-2007 11:09
Спасибо!

Да, вот как раз пример когда switch гораздо опрятнее чем If.

мастер
Группа: Сообщество GM
Сообщений: 79
Добавлено: 01-02-2007 20:33
Да опрятный, но ругается на деление на ноль.

Решил попробовать с if
чтото типа "if (point_direction (x, y, mouse_x, mouse_y) >= 23) sprite_index = spr1"
но вопервых здесь гдето ошибка, да еще надо совместить с проверкой "point_direction() <68"

но как это сделать еще не понял...
помогите пожалуйсто, кому не трудно.

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 01-02-2007 21:57
Это не статья, а чудовище, убить бы того, кто это придумал.

switch (direction div (direction div 8))
begin
case 0: begin
sprite_index:= spr0
break;
end;
case 1: begin
sprite_index:= spr45;
break;
end;
...
end;

Где 8 - число возможных направлений

begin и end не обязательно

мастер
Группа: Сообщество GM
Сообщений: 79
Добавлено: 01-02-2007 22:13
Ругаерся на строку: switch (direction div (direction div 8))
а именно на (direction div 8)
говорит что происходит деление на ноль.

иначе-б сейчас не спрашивал.

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 02-02-2007 12:13
begin и end не обязательно
но это привычка что здесь поделаеш, но я бы отучался
зачем писать лишнее

2Szahi попробуй так
if key.._ch..(vk_up)&& key.._ch..(vk_right)
{
спрайт в том направлении
}
и так для каждого направления


мастер
Группа: Сообщество GM
Сообщений: 79
Добавлено: 02-02-2007 13:33
У меня МЫШКА!

Стоп! Если && связывает два условия, то думяю у меня получится.
Осталось только здесь ошибку найти:
if (point_direction (x, y, mouse_x, mouse_y) >= 23
ГМ говорит синтаксис неверен.

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 02-02-2007 14:14
if (point_direction (x, y, mouse_x, mouse_y) ) >= 23

есле этот код такой какой и в игре
то ты скобку забыл

мастер
Группа: Сообщество GM
Сообщений: 79
Добавлено: 02-02-2007 15:58
Спасибо!

Да дело было в скобке, да и привычка из АСМы сработала вместо точки с запятой, двоеточие поставил.

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

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

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

KXK.RU