我正在制作一个游戏,其中多个玩家应该能够一次玩。这是一款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