2013-05-11 114 views
0

我試圖複製本教程:平穩地移動飛船與SFML C++

http://gamedev.tutsplus.com/tutorials/implementation/smoothly-move-an-entity-to-the-position-of-the-mouse/

這是我的代碼以SFML在我的遊戲主循環:

xDistance = sf::Mouse::getPosition(window).x - joueur.getX(); 
yDistance = sf::Mouse::getPosition(window).y - joueur.getY(); 
distance = sqrt((xDistance * xDistance) + (yDistance * yDistance)); 

if(distance > 1) 
{ 
    joueur.move(joueur.getX() + xDistance * easingAmount, joueur.getY() + yDistance * easingAmount); 
} 

但忽略了最低工作和我得到一個非常奇怪的運動......我的意思是它非常簡單直接...

任何想法?

+0

這將以與JS工作相同的方式工作,唯一的區別在於每個框架與「玩家速度」之間的時間。如果javascript顯示的幀數更多,但播放速度相同,則在移動光標時播放器的移動看起來會更平滑,但實際上這仍然是一條直線。 – RelevantUsername 2013-05-11 00:12:31

回答

1

move()將當前位置添加到對象(而不是覆蓋它的setPosition())。您不需要將其當前位置添加到joueur.getX()