gpt4 book ai didi

c# - 如何在一个简单的赛车游戏中管理 "speed"?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:19 25 4
gpt4 key购买 nike

我正在尝试使用 C#、sdl.net 开发一个简单的 2d 赛车游戏(自上而下查看)。现在,我正在尝试管理我的车的速度、加速度和刹车。我的问题是算法。我的循环 (Events_Tick) 每秒执行 50 次,其中我的汽车位置的处理方式如下:

private void Events_Tick(object sender, TickEventArgs e)
{
car.ProcessPosition();
}

ProcessPosition是这样的:

if (throttle)
{
speed += 1;
x += 1;
}

最后,我在新的 X 上绘制我的 Sprite 。

问题是太快了!

所以我想问你如何保持 50 FPS(每秒帧数)并且每秒仅移动我的 Sprite (汽车)N 像素(基于其速度)。

提前致谢!问候!

最佳答案

首先,因为您玩的是 2d 而不是 1d 游戏,所以您需要速度

class Vector
{
double x;
double y;
}

在这门类(class)中,您应该保持位置和速度。

由于您是 2d 自上而下的,因此您必须在速度向量上实现一些 .RotateLeft().RotateRight()

旋转将像这样实现:

x' = cos(a) * x - sin(a) * y
y' = sin(a) * x + cos(a) * y

并且您必须按如下方式实现您的 .Move() 方法:

void Move(Vector v)
{
x+=v.x;
y+=v.y;
}

编辑:请询问是否需要澄清或进行更深入的讨论。

此外,您可以在此处使用计时器,但尝试计算自上次计时器事件所花费的时间,然后在添加到当前位置时将速度乘以该值,这样您将获得更准确的位置。

sin()cos() 中的 a 将是一个以弧度表示的角度,您可能需要此处的度数。

这里是 something让你了解度数和弧度。

关于c# - 如何在一个简单的赛车游戏中管理 "speed"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3968473/

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