2017-03-09 80 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