gpt4 book ai didi

c++ - 按下 2 个箭头键时实现对角线移动(使用 SFML)

转载 作者:行者123 更新时间:2023-11-30 00:54:20 26 4
gpt4 key购买 nike

我认为没有必要进行任何代码演示,因为它不像 C++ 那样使用 SFML。问题是,我如何让我在屏幕上闪烁的东西实现流畅的移动?例如,我将一个正方形 blit 到屏幕,并将其位置变量设为我之前定义的整数,以便我可以使用箭头键移动它。当我按下将值添加到变量的键时,如果我只使用一个键,它工作正常,但在按下两个键时,它只会添加到第二次按下的值。我将如何使其沿对角线移动?

最佳答案

公认的答案不是很好。

最好分别存储 x 和 y 移动,检查所有已按下的键,然后分配实际移动。

x = 0.0;
y = 0.0;
speed = 1.0;

if (key.up())
{
y -= speed;
}

if (key.down())
{
y+= speed;
}

if (key.left())
{
x -= speed;
}

if (key.right())
{
x+= speed;
}

Move(x, y);

这应该让你开始。

当你深入研究它时,你会注意到这段代码有一点怪癖——如果你沿对角线移动,你会发现你移动得太快了,有点作弊!这是因为添加了两个单位的速度,而不仅仅是一个。您可能认为解决方案是将每个值减半,但这样您就会太迟钝了。当您沿对角线移动时,您需要考虑三角形和毕达哥拉斯定理 - 您需要通过将两个方向除以根 2 来进行补偿。

关于c++ - 按下 2 个箭头键时实现对角线移动(使用 SFML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14421508/

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