如何让汽车在越过终点线时添加 points/laps?

How to make car add points/laps as it goes over finish line?

我正在 game-maker 上编写一个简单的自上而下的汽车游戏,该游戏的目的是通过在椭圆形轨道上驾驶汽车来获得尽可能多的 points/laps。

汽车以speed = 5行驶,并以代码direction = direction + 2; image_angle = direction;

改变方向

如果您还不知道,我是编码的新手,但是我已经搜索了至少两周的解决方案并且没有找到任何东西 - 我怎样才能让游戏每次都增加一个点汽车通过终点线?我想汽车和终点线之间肯定会发生碰撞事件,但我不明白为了添加一个点而发生的代码,如果我编写游戏代码来添加一个点,我预计会有是一个错误,当汽车越过终点线时,将添加几个点(而不是 1 个点),因为它在整个过程中都是 "colliding"。 每次汽车绕过赛道时,如何添加一个点? 如果您需要任何进一步的信息,我很乐意提供帮助。谢谢。

在 Kake_Fisk 的帮助下,我在赛道周围设置了 3 条中线,并在汽车和中线之间创建了一个碰撞事件:prntscr.com/c4uecl - 问题是 add_point 实际上并没有做任何事情,我很乐意提供一些帮助。我遇到的另一个问题是,他的车本来是要用鼠标按钮 1 转弯的,但是当我尝试让车只在我对准它时转弯,如果你明白我在说什么,你也有解决方案吗?

首先,你还有一个问题需要考虑。是什么阻止球员在球门线上来回行驶?您需要在整个轨道中添加不可见的线条。如果所有这些线都通过了,你就知道玩家已经驾驶汽车通过了整个赛道。

您想在汽车到达球门线时触发一次代码。通过利用以前的系统,这可以很容易地完成。在与球门线发生碰撞时,使用类似这样的东西:

// If all the invisible lines in the track has been visited
if (midway_lines == 3)
{
    // Sets the variable back to 0 so this piece of code only gets executed once
    midway_lines = 0;
    add_point();
}

obj_car:

creation event:
points = 0; //instance variable

step event:
if(place_meeting(x,y,obj_line)) {
 points += 1;
}

if(points == 3) {
 room_goto(rm_win);
}