gpt4 book ai didi

c - 如何在两个 2D 对象的每次碰撞中删除一条生命?

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:49 25 4
gpt4 key购买 nike

我正在编写一个游戏来获得乐趣并更加熟悉 C 和 GBA 模式 3。不过,我遇到了一个问题。

我在屏幕上有这两个方 block ,一个是好人,另一个是坏人。当好人与坏人相撞时,它应该会夺走一条生命。这就是问题所在。

我在运行游戏的 while 循环中有这个:

    if (plyr_row < enemy_row + enemy_size && plyr_ row 
+ plyr_size > enemy_row && plyr_col < enemy_col + enemy_size
&& plyr_size + plyr_col > enemy_col)
{
lives--;
}

生命确实下降了,但是当玩家与敌人接触时很多生命被夺走了。换句话说,在接触过程中,生命值下降得非常快,我只想在它们每次碰撞时移除一个,我该如何实现?

最佳答案

您必须使用标志来记住当前是否正在发生碰撞。像这样的东西:

int in_collision = 0; // global flag, initialized to 0 once at start

...

if (plyr_row < enemy_row + enemy_size &&
plyr_row + plyr_size > enemy_row &&
plyr_col < enemy_col + enemy_size &&
plyr_size + plyr_col > enemy_col) {
if (!in_collision) {
in_collision = 1;
lives--;
}
} else {
in_collision = 0;
}

现在,正在运行的碰撞必须在下一次碰撞中删除另一个生命之前停止。

关于c - 如何在两个 2D 对象的每次碰撞中删除一条生命?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47161749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com