2013-11-09 2 views
0

Хей, я много искал на Lidgren, и мне удалось получить простой консольный клиент и серверы, но мне очень тяжело работать с 2D ...C# Lidgren - Отправить вакансии и плейеры?

В основном, что у меня так далеко это только консольные приложения, но я нашел пример 2D-игры с использованием Lidgren. Вы открыли сервер, а затем два приложения. Они автоматически подключались, и вы могли играть с двумя окнами, видя, как движение персонажа на другом экране. Этот проект используется массив для загрузки текстур и в 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 переменного? И если бы я хотел использовать разные классы для этого, просто бы просто сделать то же самое, но в классах игроков, а также анимации - как вы отправляете данные обновления текстур? Извините, что я так много спрашиваю. Но я не нашел ничего, что на самом деле помогает:/

Спасибо заранее, и если вам нужно что-то узнать, расскажите! :)

ответ

0

Переменная num просто выбирает уникальную текстуру, которая всегда будет одинаковой, из массива текстур. Скажем, у вас есть 4 текстуры, но Keymodulo operator (%) получит остаток от 7/4, что было бы 3. В принципе, оно обертывало бы вокруг количества текстур, потому что им пришлось бы повторять (Ex, Id 4 и Id 8 имеют одинаковые текстуры)

Теперь вы можете использовать статическую текстуру, но вы можете использовать тот же код, чтобы выбрать вариант текстуры.

Что вы имеете в виду данные об обновлении текстуры? Такие, как изменение текстур или обновление позиций? Если меняется текстура, то известна текстура или нет? (Ex, может ли быть отправлено ID или имя или данные должны быть?)

+0

Что я имею в виду с обновлением текстур, это в основном анимация, как в классе игрока: 'public void Animate (GameTime gameTime, int sFrame, eFrame) ' и использовать переменную' currentFrame' и 'прошлый '. И с позициями, просто отправить сообщение с переменной, чтобы его обновить? Я спрашиваю об этом, так как я не совсем получаю учебник Lidgren, а также я очень новичок в создании сетей. Спасибо :) – QuackTheDuck

+0

Для анимаций вы продолжаете добавлять «прошедшие» к переменной, а когда это больше, чем 'x', сбросьте переменную и измените кадры. Честно говоря, для позиции у меня тоже были проблемы. Отправка движения не работает, отправка позиции выглядит багги, так что да, не уверен в этом. Это очень большая тема сама по себе, поэтому вы можете задать другой вопрос, чтобы получить некоторое внимание. – Cyral

 Смежные вопросы

  • Нет связанных вопросов^_^