我想用一個計時器產生敵人並將它們從左向右移動,我該怎麼做?C#如何產生敵人並移動它們?
例子:
int count;
timer (every 1 sec)
{
Enemy somename+count = new Enemy();
count++;
}
timer (every 0.001 sec)
{
somename+count.x++;
}
我想用一個計時器產生敵人並將它們從左向右移動,我該怎麼做?C#如何產生敵人並移動它們?
例子:
int count;
timer (every 1 sec)
{
Enemy somename+count = new Enemy();
count++;
}
timer (every 0.001 sec)
{
somename+count.x++;
}
你的根本問題似乎缺乏一種方法來存儲您的所有敵人的引用。 Generics and collections爲這類問題提供瞭解決方案。我將使用List<T>
,這是最基本的這種集合。然而,還有很多其他人都有自己的有用屬性。
考慮:
private class Enemy
{
public int position;
}
private List<Enemy> enemyList = new List<Enemy>();
private void timer1_Tick(object sender, EventArgs e)
{
enemyList.Add(new Enemy());
}
private void timer2_Tick(object sender, EventArgs e)
{
foreach(Enemy enemy in enemyList)
{
enemy.position++;
}
}
還要考慮更新可視對象的大名單每增加0.001第二個是無用和浪費。一毫秒更新對應於1000fps。沒有視頻設備會更新,沒有人能夠快速看到。通常,對於實時更新,您應該瞄準在30-60fps之間更新。這相當於不超過約0.016s(16ms)。
謝謝你幫了我很多=) – user3289428
當您創建,本地範圍內的敵人,你不能訪問他們,一旦你走出循環。相反,有一個列表,並添加新產生的敵人到這個列表。 維護兩個線程來完成你的兩項任務。 1)線程 - 1將添加產卵敵人添加敵人到我們的列表。 2)線程-2會移動我們產生的列表中的敵人。 但是,因爲出列表是兩個線程之間的共享資源,所以總是使用'鎖'訪問列表。
謝謝幫助了我很多。如果不會有人有更好的答案,我會標記你的答案最好=) – user3289428
高興地幫助.. – Zeref
如果這是一個任務,並啓動它並運行。只需使用Timer類。 您不會像1000hz(1ms)那樣獲得高分辨率,儘管您希望移動。
var timerCreate = new Timer {Interval = 1000};
timerCreate.Tick += delegate(object o, EventArgs args)
{
// create them
};
var timerAction = new Timer {Interval = 50};
timerAction.Tick += delegate(object o, EventArgs args)
{
// move them
};
謝謝,但我的問題,它是如何,我可以創造無限enemis和移動他們我感謝你的幫助=) – user3289428
請不要使用虛假的代碼,除非你真的不知道自己在做什麼。你知道如何製作和使用計時器嗎?如果答案是肯定的,那麼請說出來,然後使用程序中的實時計時器代碼,這樣我們就不會有兩個問題可以回答問題了。 –
我不建議你創造無限的敵人,因爲在移動你的遊戲一段時間後會開始減速。爲了避免這種事情,你應該限制敵人 –