【问题标题】:Game maker collisions only work sometimes游戏制造商冲突有时只起作用
【发布时间】:2016-04-09 20:25:03
【问题描述】:

这是我的游戏中敌人的代码

//Collision
if (place_meeting(x,y,Object_Wall))
{
    speed = 0
    direction = point_direction(x,y,Object_Wall.x,Object_Wall.y) + random_range(160,200)
    speed = sp / 2
    time = random_range(room_speed * 0.75,room_speed * 3)
}

当僵尸撞到墙上时,它应该转身走另一条路。 这在大多数情况下都有效,但有时它们只会在墙壁上漂移,如果他们跟随玩家并且他靠近墙壁,他们就会穿过墙壁。 我不知道为什么它有时不起作用,希望帮助解决这个问题。

我使用Object_Wall作为父对象,他们使用它,但问题出现在它的子对象上。

【问题讨论】:

    标签: collision game-maker


    【解决方案1】:

    当您使用point_direction(x,y,Object_Wall.x,Object_Wall.y) 时,它不是使用place_meeting(x,y,Object_Wall) 找到的对象。

    place_meeting(x,y,Object_Wall) 将检查与对象Object_Wall 的所有实例的冲突。但是,当您在point_direction 中使用对象 id 而不是实例 id 时,GM 将首先(按创建顺序)获取对象 Object_Wall 的实例。

    您可以使用例如collision_circle 函数获取实例ID。 但我建议在其中使用Collision 事件和other 关键字。

    【讨论】:

    • 所以当它发生碰撞时,我可以用 with(other) 来获取墙的坐标,然后用这些来离开?
    • 如果墙中的物体没有标记为Solid,你可以这样做,例如x=xprevious; y=yprevious;然后改变方向direction = point_direction(x, y, other.x, other.y) + random_range(160,200);
    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多