Суббота, 20 Апреля 2024, 07:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » XDominator [389]
Результаты поиска
XDominatorДата: Понедельник, 10 Июня 2013, 15:57 | Сообщение # 361 | Тема: Самонаводящаяся ракета
постоянный участник
Сейчас нет на сайте
Вроде просто же. Направляешь ракету неким начальным импульсом под нужным тебе углом к горизонту, через некоторое время(например пару секунд) включаешь скрипт преследования. Вуаля. Код в чистом виде я приводил сверху, он вполне подойдет, только включать его не сразу после создания объекта, а по достижении им некой высоты или через некотрое колво шагов

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 07 Июня 2013, 08:42 | Сообщение # 362 | Тема: Несколько спрайтов в одном объекте
постоянный участник
Сейчас нет на сайте
Это хорошо, вот только твой код не учитывает возможности поворота этого объекта вокруг своей оси. Чтобы твой объект мог еще и поворачиваться, нужно цеплять составные части друг к другу, а для этого уже нужна тригонометрия... Но раз решил то хорошо)

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Четверг, 06 Июня 2013, 16:56 | Сообщение # 363 | Тема: Ужасная проблема с компилятором
постоянный участник
Сейчас нет на сайте
Название темы порадовало))

Поудаляй лишний софт, отключи антивирус, вспомни когда последний раз обновлял какой то драйвер


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Вторник, 04 Июня 2013, 15:09 | Сообщение # 364 | Тема: Меняются все спрайты объектов
постоянный участник
Сейчас нет на сайте
Лично я не понимаю что он хочет реализовать, поэтому не могу написать конкретного алгоритма. Но раз уж ты все понял, то, наверное, сможешь просвятить всех присутствующих, и что то посоветовать автору?

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Вторник, 04 Июня 2013, 14:11 | Сообщение # 365 | Тема: Меняются все спрайты объектов
постоянный участник
Сейчас нет на сайте
этот код похоже исполняется в самом объекте, в котором меняется спрайт, так что тут все не так просто))

Если бы ты его исполнял из какого то другого объекта, было бы проще, а так сложно тебе что то порекомендовать. Опиши ситуацию подробней.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Понедельник, 03 Июня 2013, 09:15 | Сообщение # 366 | Тема: Самонаводящаяся ракета
постоянный участник
Сейчас нет на сайте
Мне кажется ты принципиально неверно подходишь к вопросу. Есть замечательная функция - direction_to_point(x,y,x1,y1) (или point_direction(x,y,x1,y1) , не помню щас точно) - которая возвращает тебе направление от точки (x, y) к точке (x1, y1). Ты можешь получать это значение каждый раз к нужному объекту - цели, которая идет за игроком, или лучше - к самому игроку. И все что тебе нужно - просто поворачивать ракету в нужную сторону в зависимости от разницы направлений - полученного функцией и собственного направления ракеты. Таким образом, ты можешь ограничить скорость поворота ракеты, и от нее вполне можно будет увернуться. Также, можно сделать скорость поворота ракеты зависимой от ее скорости полета - например чем меньше скорость, тем более резкий поворот она может сделать...

Примерно-схематично код выглядит так(степ в ракете):

Код

a = direction_to_point(x , y, x1, y1) //х1, у1 - координаты цели
d = direction
angle = 5 -- угол поворота на 1 шаг

if a<d //если нужный угол меньше личного направления(отсчет против часовой стрелки)
{
  if abs(a-d) <= 180 //и разница углов меньше 180
   a += angle //Тогда близжайшее направление - против часовой
  else
   a -= angle // Если разница больше 180 - то близжайшее направление - по часовой
}
else // Иначе, если a>= d - т.е. располагается ближе к 0 по часовой стрелке
{
  if abs(a-d) <= 180 // То все выполняется зеркально
   a -= angle
  else
   a += angle
}

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


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 31 Мая 2013, 19:34 | Сообщение # 367 | Тема: Проверка уничтожения объекта
постоянный участник
Сейчас нет на сайте
Если у тебя объект создан еще в редакторе, то можно приписать ему некую переменную-идентификатор, в creation code комнаты, и проверять в его собственном событии destroy на эту самую переменную. Если она проходит - то выполняем блок действий(Например в этот момент можно задать какую то переменную в каким нибудь объекте-контроллере, и таким образом ты и получишь детекцию уничтожения нужного объекта). короче, вариантов масса, выбирай любой

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 31 Мая 2013, 17:44 | Сообщение # 368 | Тема: Головоломочка(Коллизии)
постоянный участник
Сейчас нет на сайте
слишком топорный способ, у длинных спрайтов будет очень большая зона "неподхождения" к объектам.

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 31 Мая 2013, 17:43 | Сообщение # 369 | Тема: Единичное произведение действия при нажатии клавиши
постоянный участник
Сейчас нет на сайте
таки шо?

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 31 Мая 2013, 17:42 | Сообщение # 370 | Тема: Проблема при создании онлайн игры на 39dll
постоянный участник
Сейчас нет на сайте
Роутер то есть?

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 31 Мая 2013, 13:30 | Сообщение # 371 | Тема: Единичное произведение действия при нажатии клавиши
постоянный участник
Сейчас нет на сайте
Отпиши потом что получилось)

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 31 Мая 2013, 12:33 | Сообщение # 372 | Тема: Единичное произведение действия при нажатии клавиши
постоянный участник
Сейчас нет на сайте
Рывок у тебя не получится в любом случае, потому что для того чтобы отрисовать рывок как движение из точки а в точку Б, нужно несколько кадров, а key_pressed позволяет использовать только один. Тебе в таком случае нужен принципиально другой алгоритм, т.е. назначить некую ответственную переменную. Скажем, так:
В create:
Код

a = 0

Наша ответственная переменная

В степ:
Код

if keyboard_check_pressed(key) and a = 0
  {  
     a = 5
  }

т.е. наш "рывок" будет разбить на 5 шагов. далее там же в степе дописываем:
Код

if a>0  
{
    a-= 1
    x += my_speed*cos(my_direction)  
    y -= my_speed*sin(my_direction)
}

таким способом получаем движение к точке в течении a шагов. Соответственно изменишь my_speed до нужного значения(ну, в данном случае my_speed/5, например)

Ну и конечно нужно следить, чтобы во время выполнения нашего "скрипта" были запрещены для любого изменения my_direction, my_speed, a, иначе будут траблы и баги. Ну и конечно нужно проверять близость точки, например последний кусок можно заменить на
Код

if a>0  
{
    if distance_to_point(x,y,xxx,yyy) >= my_speed
    {
       a-= 1
       x += my_speed*cos(my_direction)  
       y -= my_speed*sin(my_direction)
    }
    else
    {
       a = 0
       x = xxx
       y = yyy
    }
}

т.е. скрипт закончится раньше времени если мы близко к конечной точке.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 31 Мая 2013, 11:40 | Сообщение # 373 | Тема: Коллекции или карточки
постоянный участник
Сейчас нет на сайте
Это то все легко и просто. Вопрос в другом - а как ты будешь открытые карточки определять после того, как выйдешь\зайдешь в игру заново? Массив то твой после выхода из игры обнулится smile

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Пятница, 31 Мая 2013, 11:38 | Сообщение # 374 | Тема: Единичное произведение действия при нажатии клавиши
постоянный участник
Сейчас нет на сайте
Потому что ты используешь не ту функцию. В данном случае, тебе достаточно писать не move_towards_point(x,y+50,30), a
y += 50(или, в твоем случае, y += 30, т.к. последний аргумент, вроде, скорость, и ты ее ставишь 30, а значит, за один шаг твой объект сдвинется на 30 точек вправо)

Если же отойти от твоих x,y и считать их не личными координатами объекта, а некими абстрактными ххх, ууу, то тогда тебе нужен более сложный алгоритм.

во первых тебе нужно узнать направление будущего движения:

Код

my_direction = point_direction(x, y, xxx, yyy)

- вернет тебе направление к точке xxx, yyy от личных координат объекта x, y.

и в итоге имеем что то вроде этого(на сколько мы хотим сместить объект, будем хранить в переменной my_speed(у тебя сейчас - 30)):
Код

if keyboard_check_pressed(key)
{
x += my_speed*cos(my_direction)
y -= my_speed*sin(my_direction)
}

Этот код сместит твой объект в сторону точки xxx,yyy на 30 точек. Возможно что то напутал со знаками, т.к. сам код не тестил, сижу на работе smile Удачи)


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)


Сообщение отредактировал XDominator - Пятница, 31 Мая 2013, 11:39
XDominatorДата: Пятница, 31 Мая 2013, 11:21 | Сообщение # 375 | Тема: Коллекции или карточки
постоянный участник
Сейчас нет на сайте
Проще всего конечно через ini - код, но это небезопасно, т.к. легко подправить, либо придется делать сложную систему шифровки файла. Но по большому счету это - самый оптимальный выход, т.к. стандартная ГМовская функция сохр-загр, сохраняет вообще все, что в данном случае конечно же незачем)

Вообще я работаю с кроссплатформенным движком cocos2d-x, и у него есть интересная функция:

CCUserDefault:sharedUserDefault():setBoolForKey("key_name", value)

Ну конечно же она пишет не только bool, но и integer , и string, и все в таком духе. А для чтения, юзается

keyValue = CCUserDefault:sharedUserDefault():getBoolForKey("key_name")

Вот такая простейшая связка из 2-х функций - прочитать и записать. А смысл в том, что ключи - это аналоги ключей реестра, и они хранятся в недоступном для простого смертного месте - в эдаком личном "реестре приложения". Таким образом, мы можем просто банально создать 100 ключей для каждой из твоих карточек, и по мере открытия задавать им значение "opened". Не знаю как это в стандартном ГМ реализовано и реализовано ли вообще, но вот в гм:студии, я уверен что должен быть аналог, иначе как там хранить информацию на мобильных платформах) Удачи!


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Четверг, 30 Мая 2013, 13:39 | Сообщение # 376 | Тема: 39dylib
постоянный участник
Сейчас нет на сайте
2д сессионку вполне можно написать, или например кооператив на 2-10 человек

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Среда, 29 Мая 2013, 17:39 | Сообщение # 377 | Тема: Game Maker Studio и Steam Вопрос
постоянный участник
Сейчас нет на сайте
Ищи лучше)Я нашел за 5 минут по самому банальному запросу в гугле...

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Среда, 29 Мая 2013, 17:38 | Сообщение # 378 | Тема: Выравнивание по центру
постоянный участник
Сейчас нет на сайте
Вопрос непонятен)

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Среда, 29 Мая 2013, 17:36 | Сообщение # 379 | Тема: 39dylib
постоянный участник
Сейчас нет на сайте
Вариант с PC применим для массовых ММО через интернет, но ты же не будешь искать ПК, ставить на нем сервер, настраивать wi-fi сеть, и делать кучу других действий, если захочешь поиграть с друзьями во что то посредством wi-fi? В том то и фича студии - то что она работает, и, судя по всему, позволяет создать сервер на мобильных устройствах - например для игры на уроках\лекциях по сети для определенного контингента лиц wink

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
XDominatorДата: Среда, 29 Мая 2013, 14:05 | Сообщение # 380 | Тема: Головоломочка(Коллизии)
постоянный участник
Сейчас нет на сайте
Гляну как с работы приду, если так то буду твой пример нещадно юзать в работах biggrin

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
Форум игроделов » Записи участника » XDominator [389]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг