Re: [問題] 用XNA+C#寫俄羅斯方塊
xna裡的update是讓你做遊戲的邏輯控制的
如果你在你面用SLEEP(1000)
那你遊戲的所有東西都要一秒才能改變一次了
而且這會牽扯到FPS的問題~
因為你拖延了UPDATE的時間~讓DRAW函式來不及保持60fps
他會想辦法追上~這應該是你當機的原因
要想一秒下降一次方塊
你要在你的方塊物件加入一個時間變數
記錄出現在畫面上的時間
超過要移動的時間才自行改變位置
而時間可以由UPDATE傳入的參數gameTime取得
像是這樣
class square{
public double time;
public int x,y;
public void MoveDown(GameTime gameTime){
time += gameTime.ElapsedGameTime.TotalMilliseconds;
if(time > 1000){
x += 30; //看你要順移多少像素
time -= 1000;
}
}
}
update(GameTime gameTime){
square.MoveDown(gameTime);
...做其他事情
}
大概是這樣~希望你了解
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.128.202.174
推
06/13 19:58, , 1F
06/13 19:58, 1F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):