изменение осей объекта...

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

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / изменение осей объекта...

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

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

бывалый
Группа: Сообщество GM
Сообщений: 51
Добавлено: 27-03-2006 21:18
Как сделать изменение осей объекта? У меня в игре есть миниган, снаряды создаються в x0,y0(относительно орудия) Но мне надо что- бы снаряды создавались в x20,y-5 а если сделать так, то когда миниган повернут направо, все нормально... Но при изменении image_angle все ухудшаеться и снаряды вылетают не из пушки, а из воздуха Как мне это исправить?

гроссмейстер
Группа: Сообщество GM
Сообщений: 172
Добавлено: 28-03-2006 00:47
а у тебя вид сверху?

бывалый
Группа: Сообщество GM
Сообщений: 51
Добавлено: 28-03-2006 07:44
Неа, сбоку...

гроссмейстер
Группа: Сообщество GM
Сообщений: 172
Добавлено: 28-03-2006 11:09
ну сделай так
в спрайте находятся две картинки влево и вправо
в нажатии кнопки на стрельбу пишешь:
if sprite_index = 0 //это например влево
{
create_inctance(снаряд,x+20,y-5)
}
if sprite_index = 1 //это например вправо
{
create_inctance(снаряд,x-20,y-5)
}
ну подредактируй чуть и используй

бывалый
Группа: Сообщество GM
Сообщений: 51
Добавлено: 28-03-2006 12:13
Когда Image_angle изменяем, это не поможет

гроссмейстер
Группа: Сообщество GM
Сообщений: 172
Добавлено: 28-03-2006 13:10
тогда это нада через sin и cos (синус и косинус),

пришли мне игру я посмотрю.
mail:
pix16@inbox.ru

гроссмейстер
Группа: Сообщество GM
Сообщений: 172
Добавлено: 29-03-2006 13:08
не, я не знаю как сделать

частый гость
Группа: Участники
Сообщений: 29
Добавлено: 29-03-2006 13:59
Здесь все действительно делается через синус и косинус
(x1 и y1 - координаты создаваемой пули):
x1=x0+20*cos(image_angle*pi/180) //image_angle принимает значения 0 (вправо) и 180 (влево)
y1=y0-5
затем создаешь объект, но надо иметь в виду, что код работает только для двух направлений (вправо и влево), если тебе нужна стрельба во всех направлениях, то я тебе напишу код и для этого

бывалый
Группа: Сообщество GM
Сообщений: 51
Добавлено: 29-03-2006 14:15
Дело в том, что миниган стреляет в направлении курсора мыши, поэтому надо для любого угла...

частый гость
Группа: Участники
Сообщений: 29
Добавлено: 30-03-2006 12:50
универсальный код для таких случаев:
r=point_distance(x0,y0,x0+20,y0-5)
d=point_direction(x0,y0,x0+20,y0-5)
x1=x0+r*cos((d+image_angle)*pi/180)
y1=y0-r*sin((d+image_angle)*pi/180)

бывалый
Группа: Сообщество GM
Сообщений: 51
Добавлено: 30-03-2006 18:04
if(global.pat>0)
{r=point_distance(x,y,x+20,y-5)
d=point_direction(x,y,x+20,y-5)
x1=x+r*cos((d+image_angle)*pi/180)
y1=y-r*sin((d+image_angle)*pi/180)instance_create(x1,y1,object61);
instance_create(x,y,object65);
switch(sprite_index)
{
case 90:sprite_index=91;break;
case 92:sprite_index=93;break;
}
global.pat-=1;}
Работает! Спасибо дружище!

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 01-04-2006 21:49
Вроде проще использовать
lengthdir_x(len,dir) Возвращает горизонтальный x-компонент вектора определённый указанной длиной и направлением.
lengthdir_y(len,dir) Возвращает горизонтальный y-компонент вектора определённый указанной длиной и направлением.

По сути это тоже самое, только писать все формулы не надо

магистр
Группа: Сообщество GM
Сообщений: 453
Добавлено: 03-04-2006 15:08
instance_create(x+lengthdir_x(20,direction),y+lengthdir_y(5,direction),o_rocket) //так понятнее

Ka1mik Это лучше! Т.к. когда начнешь движение сину и косинус объекта как-то неправильно считаеться.

Страницы: 1  новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / изменение осей объекта...

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

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

KXK.RU