Я делаю игру в GameMaker Studio 2, и у меня возникла проблема. Когда объект поворачивается влево или вправо, он толкается вперед. Но он должен быть в том же положении, что и в первый раз.
Я пытался использовать этот код:
/// @description vaksciojimas
// You can write your code in this editor
key_right = keyboard_check(vk_right);
key_left = keyboard_check(vk_left);
key_jump = keyboard_check_pressed(vk_space);
var move = key_right - key_left;
hsp = move * walksp;
vsp = vsp + grv;
if (place_meeting(x,y+1,obj_wall)) && (key_jump) {
vsp = -8;
}
//horizontaliai susiduria
if (place_meeting(x+hsp,y,obj_wall)) {
while (!place_meeting(x+sign(hsp),y,obj_wall)) {
x = x + sign(hsp);
}
hsp = 0;
}
x = x + hsp;
//vertikaliai susiduria
if (place_meeting(x,y+vsp,obj_wall)) {
while (!place_meeting(x,y+sign(vsp),obj_wall)) {
y = y + sign(vsp);
}
vsp = 0;
}
y = y + vsp;
//animacijos
if (!place_meeting(x,y+1,obj_wall)) {
sprite_index = sprite_jumping_player;
image_speed = 0;
if (sign(vsp) > 0){
image_index = 1;
}
else {
image_index = 0;
}
}
else {
image_speed = 1;
if (hsp == 0) {
sprite_index = sprite_player;
}
else {
sprite_index = sprite_runing_player;
}
}
if (hsp != 0) { // hsp = horizontal speed
image_xscale = sign(hsp);
}
Когда я это делаю, я смотрю этот туториал: https://thewikihow.com/video_fCeyiEcWRAs&t=8s
если у вас возникли проблемы с позицией, я не думаю, что это имеет какое-то отношение к image_xscale, потому что все, что он делает, это поворачивает игрока, чтобы он смотрел в другую сторону. пожалуйста, объясните, в чем именно ваша проблема, и покажите нам больше вашего кода на шаге даже
Итак, мой спрайт движется, пока он вращается. Когда он поворачивается, он смотрит в другую сторону (это нормально), но перемещается в другое положение (на несколько сантиметров вперед, это не нормально). Больше кода я добавил к вопросу.
Судя по всему, я думаю, что это связано с происхождением спрайта.
С источником вы решаете, где находится центр спрайта. В этот момент он должен вращаться/поворачиваться и т.д.
Вам нужно установить источник в самом спрайте (не в редакторе спрайтов, а только в изображении спрайта), потому что по умолчанию он установлен в левом верхнем углу. Установка его в центре посередине — обычный метод. Исходная точка отображается как символ «+».
Можете ли вы объяснить «проталкивание вперед»? Он движется во время поворота? Я думаю, это связано с вашей системой движения, а не с image_xscale. Если вы не имеете в виду, что он не поворачивается вокруг своей исходной точки, которую вам нужно установить в центре спрайта.