我不認爲任何代碼演示將是必要的,因爲它不是很多SFML,因爲它是C++。問題是,我將如何通過屏幕上的某些東西來實現平滑移動?例如,我將一個方塊移動到屏幕上,並且將它定義爲我之前定義的整數的位置變量,以便我可以使用箭頭鍵移動它。當我按下將值添加到變量的鍵時,如果我只使用一個鍵,但按兩個鍵時,它只能增加第二個鍵的值。我將如何使它對角移動?當按下2個箭頭鍵時實現對角線移動(使用SFML)
1
A
回答
3
僞代碼
if (key.up())
{
if (key.right())
direction = up_right;
else if (key.left())
direction = up_left;
else
direction = up;
}
else if (key.down())
{
etc...
3
接受的答案是不是很大。
您最好將x和y移動分開存儲,檢查所有按下的鍵並指定實際移動。
x = 0.0;
y = 0.0;
speed = 1.0;
if (key.up())
{
y -= speed;
}
if (key.down())
{
y+= speed;
}
if (key.left())
{
x -= speed;
}
if (key.right())
{
x+= speed;
}
Move(x, y);
這應該讓你開始。
當你仔細觀察它時,你會注意到這個代碼有一點點怪癖 - 如果你沿對角線移動,你會發現你移動得太快而且有點作弊!這是因爲兩個單位的速度正在增加,而不僅僅是一個。您可能會認爲解決方案是將每個值減半,但這樣會太慢。當你對角線移動時,你需要考慮三角形和畢達哥拉斯定理 - 你會想要通過以root 2分割兩個方向來進行補償。
0
這對我有用,但像你說的那樣,玩家可能會獲得不公平擁有更現代化的計算機。我採用了變量x和y的平方根,但我不確定這是否可以防止任何不必要的作弊行爲。
float x = 0.0;
float y = 0.0;
float speed = 0.35;
x = std::sqrt(std::pow((double)x, 2) + std::pow((double)y, 2));
y = std::sqrt(std::pow((double)x, 2) + std::pow((double)y, 2));
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
source.y = Up;
y -= speed;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
source.y = Down;
y += speed;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
source.y = Left;
x -= speed;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
source.y = Right;
x += speed;
}
playerImage.move(x, y);
另外我有一個事件後,我的事件循環比較幀計數器時鐘和幀速度。我的問題是,這個塊是否對上面的代碼有影響,可以防止作弊,如果是的話,我會刪除sqrt語句?
frameCounter = (updateFrame) ? frameCounter + frameSpeed * clock.restart().asSeconds() : 0;
if(frameCounter >= switchFrame)
{
frameCounter = 0;
source.x++;
if(source.x * 32 >= pTexture.getSize().x)
source.x = 0;
}
相關問題
- 1. 同時按下2個鍵可以對角線移動tkinter?
- 2. 按左或右箭頭鍵時對角移動字符
- 3. 當按下箭頭鍵時,使MATLAB滑塊不滑動
- 4. 用箭頭鍵移動背景按
- 5. 用箭頭鍵移動JFrame?
- 6. 用箭頭鍵移動JLabel
- 7. 使用箭頭鍵將焦點移動到下一個控件
- 8. 當我按下鍵盤上的箭頭鍵時增加數字
- 9. 自動完成的文本框,當向下箭頭鍵按下
- 10. 使用ApplyForce使用箭頭鍵移動對象不起作用
- 11. Sublime Text 2向上/向下箭頭移動鍵綁定
- 12. 如何使用javascript使用箭頭鍵移動對象
- 13. 當按下箭頭鍵時在下拉菜單上使用Jquery livequery?
- 14. Javafx combobox changeListener當使用鍵盤箭頭鍵時觸發動作
- 15. Javascript按住箭頭鍵時?
- 16. 如何使用document.onkeydown用箭頭鍵移動對象?
- 17. 如何使用箭頭鍵在ASP.NET Gridview中上下移動
- 18. Eclipse無需使用箭頭鍵左右/上/下移動光標
- 19. 當按下箭頭鍵時,JS Div沒有改變顏色
- 20. 如何在firefox中使用selenium2library按下右箭頭鍵按下
- 21. 當按下鼠標左鍵的同時按下了SFML 2.0
- 22. JavaScript用箭頭鍵移動圖像
- 23. 不能用箭頭鍵移動JLabel
- 24. WPF用箭頭鍵移動圖像
- 25. 用箭頭鍵移動元素
- 26. 如何用箭頭鍵移動矩形?
- 27. 用keylistener /箭頭鍵移動圖形
- 28. 如何使用箭頭鍵移動對象?
- 29. 如何使用箭頭鍵保持對象移動?
- 30. 插畫師使用箭頭鍵移動對象
非常感謝!這已經完成了這項工作! – Safixk