0

我正在尝试在我的游戏中制作射击机制,但我无法强制子弹移动到鼠标方向。它只是在玩家对象下创建并停留在他的坐标上。使用物理不会改变情况,无论 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);改用但不起作用

然后我将实例层“子弹”置于所有其他层之上,然后在 obj_player 的“步骤”事件中设置条件

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

子弹只是落在玩家坐标上。我有理论认为子弹只是堆叠在玩家中,但即使我不在玩家坐标上创建子弹它仍然不起作用我也改变了玩家和子弹精灵的轴,但仍然没有结果......

我真的不明白为什么它不起作用,因为我在类似这样的 youtube 教程上看到了几乎相同的代码, 并且在他们的情况下它可以工作。

4

1 回答 1

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);

完毕!现在子弹会移动。

于 2018-04-17T12:18:56.637 回答