Проблема с очками гейммейкера

У меня есть шипы, расположенные передо мной в бесконечном раннере. Кроме того, если я прыгаю выше, но все же над шипом, это дает мне меньше очков. Как это исправить?

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

if(collision_line(x, y, x, 0, obj_player, false, true)){
score += 1;
}

person user1947331    schedule 22.02.2014    source источник


Ответы (3)


Есть много способов сделать это, но проще всего без большого изменения кода:

if(noPointsYet && collision_line(x, y, x, 0, obj_player, false, true)){
   score ++;
   noPointsYet = true;
}

Не забудьте установить noPointsYet = false; в событии Create.

Конечно, есть и лучшие, такие как размещение шипов x-pos в массиве/очереди и проверка того, что вы уже прошли его с правильным y-pos выше, проверка с помощью instance_place, получение идентификатора и проверка того, что вы его прошли и т. д.

person gnysek    schedule 24.02.2014

Что вы делаете, так это создаете спрайт зеленой линии, которая является высотой вашей комнаты. Затем создайте новый объект и снимите флажок «Видимый», назовите его как угодно, поскольку это ваша игра. В событии создания объекта шипа вы выполняете следующий фрагмент кода:

spike_line = instance_create(Your line object name here)
spike_line.x = obj_spike.x; // obj_spike is the name of your spike object

Надеюсь, что это работает. Комментируйте, если найдете ошибки.

person Tanay Karnik    schedule 19.04.2014

Вероятно, это происходит потому, что игрок находится над шипами на 13 шагов, отсюда и 13 очков.

На вашем месте я бы создал скрытый объект (длинную черную линию) и поместил бы его в то же место, что и шипы. Затем, если игрок сталкивается с ней, вы даете 1 очко и уничтожаете невидимую линию.

person Rob    schedule 07.04.2014