2013-11-09 37 views
0

Heey,我一直在寻找很多关于Lidgren,我已经成功地得到一些简单的控制台客户端和服务器,但我有一个很艰难的时间与2D ...C#Lidgren - 发送职位和玩家队列?

基本上我有这么远远只是基于控制台的应用程序,但我发现了一个使用Lidgren的2D游戏的例子。你打开了一个服务器,然后是两个应用程序。他们自动连接,你可以玩两个窗口,看到角色在另一个屏幕上移动。该项目使用的阵列加载纹理和在Draw()方法简单绘制阵列,但使用从值:

foreach (var kvp in positions) 
{ 
    // use player unique identifier to choose an image 
    int num = Math.Abs((int)kvp.Key) % textures.Length;` 
    // draw player 
    spriteBatch.Draw(textures[num], kvp.Value, Color.White); 
} 

有人能解释num变量做什么?如果我想使用diffrent类来做到这一点,我会只是做同样的事情,但在播放器类,还有动画 - 你如何发送纹理更新数据?对不起,我问了这么多..但我还没有发现任何实际上有所帮助:/

在此先感谢,如果您需要知道别的,告诉我! :)

回答

0

num变量只是从纹理数组中选择一个独特的纹理,它总是相同的。假设您有4个纹理,但Key%)将获得7/4的剩余部分,这将是3.基本上它会将其包裹在纹理数量的周围,因为它们必须重复(Ex,Id 4和Id 8具有相同的纹理)

现在,您可以使用静态纹理,但可以使用相同的代码来选择纹理变化。

你是什么意思纹理更新数据?如更改纹理或更新位置?如果改变纹理,质地是否已知? (例如,可以发送ID /名称,还是数据必须?)

+0

我的意思是纹理更新基本上是动画,就像在播放器类中一样: 'public void Animate(GameTime gameTime,int sFrame, eFrame)' 并使用'currentFrame'和'elapsed'变量。与职位,只是发送消息与变量来更新它?我在问这个,因为我没有完全理解Lidgren教程,而且我对网络也很陌生。谢谢:) – QuackTheDuck

+0

对于动画,你会继续添加'elapsed'到一个变量,当它大于'x'时,重置变量并改变帧。老实说,对于职位,我也有问题。发送移动不起作用,发送位置看起来越野车,所以是的,不知道那个。这本身就是一个很大的话题,所以你可能想问另一个问题来获得一些关注。 – Cyral