Итак, я делаю игру в Game Maker Studio 2, и это похоже на футбол, но с полетом. Я только что сделал управление движением и реактивным ранцем, и прошлой ночью он работал, но когда я загрузил его сегодня утром, это произошло. Обычно, когда вы двигаетесь, вы видите только одно изображение (спрайт), но оно показывает, где оно было, и оставляет изображение там. Я не знаю, то ли это ошибка оперативной памяти, то ли я что-то не так сделал в коде.
код: Шаговое событие в объекте игрока
/// @description Movement logic
// Get the input
var x_input = (keyboard_check(vk_right) - keyboard_check(vk_left)) * acceleration_;
// Vector variables
var vector2_x = 0;
var vector2_y = 1;
// Horizontal movement
velocity_[vector2_x] = clamp(velocity_[vector2_x]+x_input, -max_velocity_[vector2_x], max_velocity_[vector2_x]);
var on_ground = tile_collide_at_points(collision_tile_map_id_, [bbox_left, bbox_bottom], [bbox_right-1, bbox_bottom]);
if keyboard_check(vk_right){
if on_ground {
sprite_index = spr_player_ground_right
direction_=0
}
else {
sprite_index = spr_player_flying_right
direction_=0
}
}
if keyboard_check(vk_left){
if on_ground {
sprite_index = spr_player_ground_left
direction_=1
}
else {
sprite_index = spr_player_flying_left
direction_=1
}
}
// Friction
if x_input == 0 {
velocity_[vector2_x] = lerp(velocity_[vector2_x], 0, .2);
}
// Gravity
velocity_[vector2_y] += gravity_;
// Move and contact tiles
move_and_contact_tiles(collision_tile_map_id_, 64, velocity_);
// Jumping
var on_ground = tile_collide_at_points(collision_tile_map_id_, [bbox_left, bbox_bottom], [bbox_right-1, bbox_bottom]);
//if on_ground {
// Jumping
if keyboard_check(vk_space) {
velocity_[vector2_y] = -jump_speed_;
if direction_=0 {
sprite_index = spr_player_flying_right
direction_=0
}
else {
sprite_index = spr_player_flying_left
direction_=1
}
}
//}
Создать событие в объекте игрока
/// @description Movement variables
velocity_ = [0, 0];
gravity_ = 0.3;
jump_speed_ = 4;
max_velocity_ = [8, 32];
acceleration_ = 2.1;
direction_ = 0;
// Get the tilemap id
var layer_id = layer_get_id("CollisionTiles");
collision_tile_map_id_ = layer_tilemap_get_id(layer_id);
Я думаю, что этот код должен охватывать это.
Любая помощь приветствуется!