为什么 "ghost" 的精灵卡在背景中? GMS 2
Why is there a "ghost" of the sprite stuck in the background? GMS 2
所以我正在 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);
我认为代码应该涵盖它。
感谢任何帮助!
您是否在当前绘制背景的房间中禁用了此复选框?
如果是,请重新检查。
注意这是 gm8,但应该是一样的。
如果有人遇到这个问题,我知道一个适合我的修复方法。
制作一个新的背景图层并将其放在所有其他图层的最底部。
link to photo
确保你在那个新的背景层上并进入属性房间
link to photo
然后转到视口和相机
link to photo
之后确保您检查了清晰的视口背景
link to photo
如果这对你不起作用,很抱歉我帮不了你
所以我正在 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);
我认为代码应该涵盖它。
感谢任何帮助!
您是否在当前绘制背景的房间中禁用了此复选框? 如果是,请重新检查。
注意这是 gm8,但应该是一样的。
如果有人遇到这个问题,我知道一个适合我的修复方法。
制作一个新的背景图层并将其放在所有其他图层的最底部。
link to photo
确保你在那个新的背景层上并进入属性房间
link to photo
然后转到视口和相机
link to photo
之后确保您检查了清晰的视口背景
link to photo
如果这对你不起作用,很抱歉我帮不了你