我正在製作一個遊戲,其中多個玩家應該能夠一次玩。這是一款2D
遊戲,所有角色都應該能夠在屏幕上看到彼此的移動。 就像遊戲現在所有的設備只是發佈和獲取對方coordinates
到服務器。這是通過運行的線程完成:多人遊戲編程
public void StartCoordinatorFetcherThread(final Sprite Object)
{
Thread CoordinateStarter = new Thread()
{
public void run()
{
while(true)
{
Object.testing = Object.InternetObject.GetMessages();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
CoordinateStarter.start();
}
public void StartCoordinatorPosterThread(final Sprite Object)
{
Thread CoordinatePoster = new Thread()
{
public void run()
{
while(true)
{
Object.InternetObject.PostCoordinates(Object.x,Object.y);
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
CoordinatePoster.start();
}
無論如何,我想人物移動更加順暢,因爲它可以是一個有點"laggy"
做它像this.Does人有一個想法我如何能實現這一目標?
也許我應該有一種類型的座標堆棧,它只是一直被推到座標上,然後在遊戲運行時彈出這些值。
任何幫助將不勝感激。
問候!
謝謝,看起來像線性插值可以幫忙。在http://www.racer.nl/tech/multiplayer.html上找到一個例子 – Araw 2012-03-29 10:44:43
它確實有奇效,你會驚歎不已:) – 2012-03-29 19:02:56
這個想法聽起來如何: 我正在使用線性插值並確定有多少每次屏幕更新時它應該移動的幀。因此,如果(我只關注這個例子中的X座標),先前的座標是40(角色現在在屏幕上的位置),當前是60(角色應該移動到的位置),而每次更新的frameupdate間隔爲5個座標。這意味着我將在角色達到60之前得到4(4 * 5)個更新。所以我只會將此移動添加到給定角色的事件列表中,而「laggy」部分將實際上消失:) – Araw 2012-03-29 20:11:37