游戏制作工作室2:子弹不向鼠标方向移动

时间:2018-04-15 23:19:32

标签: game-maker-studio-2

我试图在我的游戏中制作射击技巧,但我不能强迫子弹移动到鼠标方向。它只是在玩家对象下创建并保持在他的坐标上。使用物理不会改变情况,无论obj_bullet只是"使用物理"(以及传感器参数)或不使用。

他们只停留在我创建它们的坐标上

x

当我不在obj_bullet上使用物理时,子弹精灵旋转取决于鼠标位置,但仍然无法移动。

xx

我在"创建"中为我的子弹写了一个简单的代码。子弹事件

BulletPower=1;
bulletSpeed=10;
speed=bulletSpeed;
direction=point_direction(x,y,mouse_x, mouse_y);
direction+=random_range(-5,5);
image_angle=direction;

尝试使用move_towards_point(mouse_x, mouse_y,bulletSpeed);而不是

然后我制作了实例层"子弹"高于一切 然后在" step" obj_player事件

if (mouse_check_button(mb_left)){
    instance_create_layer(x,y,"Bullet",obj_bullet);
}

子弹只落在球员坐标上。 我有一个理论认为子弹只是叠加在玩家身上,但即使我创造了子弹而不是玩家坐标,它仍然无法正常工作 我也改变了玩家和子弹精灵的轴,但仍然没有结果......

我真的不明白为什么它不起作用,因为我在youtube教程like this上看到了几乎相同的代码 在它们的情况下它起作用。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,希望对某人有所帮助。子弹不移动,因为如果房间使用物理,变量“速度”将不起作用。你需要将obj_bullet作为物理对象(使用物理),然后在“创建”事件中编写代码

direction=point_direction(x,y, mouse_x , mouse_y );
phy_rotation = -direction;//it's like image angle for bullets

并制作事件“步骤”事件

phy_position_x += lengthdir_x(bulletSpeed, direction);
phy_position_y += lengthdir_y(bulletSpeed, direction);

完成!现在子弹会移动。