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

Posted

技术标签:

【中文标题】游戏制作工作室2:子弹不向鼠标方向移动【英文标题】:game maker studio 2: bullets don't move to the mouse direction 【发布时间】:2018-04-15 23:19:31 【问题描述】:

我正在尝试在我的游戏中制作射击机制,但我无法强制子弹移动到鼠标方向。它只是在玩家对象下创建并停留在他的坐标上。使用物理不会改变情况,无论 obj_bullet 只是“使用物理”(以及传感器参数)还是不使用。

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

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

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

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的“step”事件中设置条件

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

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

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

【问题讨论】:

【参考方案1】:

我解决了这个问题,我希望它可以帮助别人。子弹不会移动,因为如果房间使用物理,可变“速度”将不起作用。您需要将 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);

完成!现在子弹会移动。

【讨论】:

以上是关于游戏制作工作室2:子弹不向鼠标方向移动的主要内容,如果未能解决你的问题,请参考以下文章

少儿编程Scratch第四讲:射击游戏的制作,克隆的奥秘

Unity项目 - 打砖块游戏

unity,射手游戏

[Unity学习笔记:FPS游戏制作] 发射子弹————(2021.6.20学习笔记)

将敌人的方向瞄准玩家游戏制作工作室 2 DnD

[Unity学习笔记:FPS游戏制作]子弹拖尾,碰撞与枪口火焰效果