我已经定义了一个名为 car 的 CircularShape 具有 3 个点(显示为三角形)和 Circular shape 场,它是圆形的,我希望场保持在汽车的顶端并随着汽车的顶端移动,但问题是当我运行程序,它们不会一起移动,是否存在一些模棱两可的行为我认为两种形状的位置和原点都有问题,请纠正我,汽车的原点不能改变,但为了将来的一些目的。也有人可以建议我如何确保我的车+场不会移出窗口边界这是代码
当然它不会在 codepad.org 中运行我发布链接只是为了方便目的
我已经定义了一个名为 car 的 CircularShape 具有 3 个点(显示为三角形)和 Circular shape 场,它是圆形的,我希望场保持在汽车的顶端并随着汽车的顶端移动,但问题是当我运行程序,它们不会一起移动,是否存在一些模棱两可的行为我认为两种形状的位置和原点都有问题,请纠正我,汽车的原点不能改变,但为了将来的一些目的。也有人可以建议我如何确保我的车+场不会移出窗口边界这是代码
当然它不会在 codepad.org 中运行我发布链接只是为了方便目的
您目前缺少一个游戏循环,因此您的所有动作都将非常不可预测,因为这取决于您计算机的处理速度。
为了进一步评估,假设您的汽车每次调用代码时移动 10 个像素。如果您的处理器速度很快并且可以每秒运行 100 次代码,那么您的汽车将每秒移动 100*10pixel = 1000 像素。如果您的计算机每秒只能运行 10 次代码,那么您的汽车将移动 10*10 像素 = 100 像素。
您应该阅读游戏循环的原理。sfml 论坛中已经回答了许多问题,并且在他们的网站上有一个关于测量时间的教程(参见http://www.sfml-dev.org/tutorials/2.4/system-time.php)。
确保您的形状/实体/等。不要移出特定区域,您应该首先更新游戏循环中的所有位置,然后检查是否允许新位置。在您的示例中,您将检查形状的位置是否小于 0 或大于窗口大小。这个问题也已经在 sfml-forum 中进行了多次评估,您应该在他们的论坛中找到更好的帮助来搜索“边界框”。
希望这可以帮助。最好的祝愿,
埃西