2017-03-09 81 views
0

我已经定义了一个CircularShape命名汽车,它有3个点(显示为三角形)和圆形形状字段,它的形状是圆形的, 我希望字段留在汽车的尖端,随着汽车的提示移动,但问题是当我运行该程序,他们不一起移动,一些模糊的行为在那里,我认为这两个形状的位置和起源有一些问题,请纠正我,汽车的起源不能为了将来的目的而改变。也有人建议我我如何能确保我的车+字段不迁出窗口边界 这里是ofcourse它不会codepad.org运行我已经发布的链接只是代码无法在SFML中移动和旋转两个CirclarShape对象

http://codepad.org/CJ0JR6Qc

for conveinience purpose

回答

0

您目前正在失去一个游戏循环,因此您的所有动作都将非常不可预知,因为这取决于您的计算机的处理速度。

为了进一步评估,假设您的汽车在每次调用代码时移动10个像素。如果您的处理器速度很快,并且可以每秒运行100次您的代码,那么您的汽车将以每秒100 * 10像素= 1000像素的速度移动。如果您的电脑每秒只能运行10次代码,您的汽车将被移动10 * 10像素= 100像素。

你应该阅读游戏循环的原则。有很多问题已经在sfml论坛中得到解答,并且有关于测量其网站上的时间的教程(请参阅http://www.sfml-dev.org/tutorials/2.4/system-time.php)。

为了确保您的形状/实体/等。不要移出特定区域,您应该先更新游戏循环中的所有位置,然后检查是否允许新位置。在你的例子中,你会检查你的形状的位置是否小于0或大于窗口大小。这个问题也已经在sfml-forum中进行了多次评估,您应该在论坛中搜索“边界框”,找到更好的帮助。

希望这有助于。最好的祝愿,

Essi