Держи туториал, как создать HUD #1(видео) Правда не знаю, нужно ли тебе, ну может кому то пригодиться, а инвентарь и крафт так же как HUD делается, только каждый слот это можно сказать кнопка, с нанесенным изображениям содержимого слота(один из способов реализации) ^_^
Уже даже CE5 бесплатный и открытый... Ogre если не тухнет, но уже менее актуален. Хотя официальный сайт обновился и дорожная карта на новый год появилась...
Человек говорит про ГРАФИЧЕСКИЕ, CE5 и Unity, UDK же игровые, может человек ищет то, куда можно прикрутить свою физику или маленькое графическое приложение и все остального, кроме возможности выводить хотя бы примитивную графику, ему не надо, зачем же ему тащить за собой, несколько гигабайтов
Собственно вопрос в название темы, после того как я перенес мп с unity 4 на unity 5, появились ошибки
Код
Received state update for view id' AllocatedID: 250' but the NetworkView doesn't exist
, взял пример из интернета, тоже самое, из чего я делаю вывод что проблема именно в различиях Unity Network на Unity 4 и на Unity 5, какие отличия у них?
Сообщение отредактировал FlyOfFly - Вторник, 22 Марта 2016, 01:54
Ошибка, которая у тебя, не обязательно связана с переходом.
Я это понимаю и поэтому написал
ЦитатаLertmind ()
взял пример из интернета, тоже самое
Спасибо за туториалы под NNet все равно ~~~ Щас узнал что Unet платный, печально, ну да ладно, буду тогда сидеть под 4 Unity ^_^
Добавлено (22 марта 2016, 11:07) --------------------------------------------- вернулся на unity 4, так же
Код
using UnityEngine; using System.Collections;
public class control : MonoBehaviour {
[HideInInspector] public bool facingRight = true; [HideInInspector] public bool jump = false; public float moveForce = 365f; public float maxSpeed = 5f; public float jumpForce = 1000f; public Transform groundCheck;
private string myName = ""; public string MyName { get { return myName; } } private Vector2 syncStartPosition = Vector2.zero; private Vector2 syncEndPosition = Vector2.zero; public bool isMine = false; void Awake () { anim = GetComponent<Animator>(); rb2d = GetComponent<Rigidbody2D>(); networkView.viewID = Network.AllocateViewID(); // присваиваем уникальный идентификатор в сети networkView.stateSynchronization = NetworkStateSynchronization.Unreliable; // нам подходит способ быстрой передачи с потерями, поскольку наше передвижение интерполируется lastSynchronizationTime = Time.time; // последнее время синхронизации }
// Update is called once per frame void Update () { grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
if (Input.GetButtonDown("Jump") && grounded) { jump = true; } }
void FixedUpdate() { Debug.LogError("NAME:"+myName); if (networkView.isMine) { float h = Input.GetAxis ("Horizontal");
anim.SetFloat ("Speed", Mathf.Abs (h));
if (h * rb2d.velocity.x < maxSpeed) rb2d.AddForce (Vector2.right * h * moveForce);
if (Mathf.Abs (rb2d.velocity.x) > maxSpeed) rb2d.velocity = new Vector2 (Mathf.Sign (rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);
if (h > 0 && !facingRight) Flip (); else if (h < 0 && facingRight) Flip ();
Добавлено (23 марта 2016, 13:39) --------------------------------------------- Видимо никто не поможет Хотя бы скажите проблема в скриптах или нет? у пустого объекта повешенны скрипты Client,Server, у игрока Control и Netview, у которого путь указан на Control, а у Control на Netview
Сообщение отредактировал FlyOfFly - Среда, 23 Марта 2016, 13:40
С чего ты взял? Там есть локальная сеть (которая только и была в старой системе) и есть сервис, где Unity предлагает свои сервера, там до 20 человек бесплатно написано. Чтобы проверить я запускал tanks из официальных примеров http://forum.unity3d.com/threads/unet-sample-projects.331978/ (сначала запускал 2dshooter, но он не заработал), локальная сеть там работает, а для мультиплеера на серверах Unity нужна настройка.
Прочитал в интернете, что сервера нужно покупать и про платный, я как раз и говорил интернет, а не локалку
Цитата
You must have a Unity Pro license or subscription to use the Live mode of the service.
Сообщение отредактировал FlyOfFly - Четверг, 24 Марта 2016, 00:34
А набор тайлов представляет из себя двумерный массив с координатами x и y. Я думаю, что можно вычислить площадь видимой зоны окна и сравнивать с координатами. Но что точно нужно сделать?
В таком случае, надо просто не выводить весь массив стразу, а выводить только в радиусе определенном вот допустим типа такого
Ты написал, что платный UNet, а это неверное утверждение и ты зачем-то вернулся к устаревшей сети, когда мог написать тоже самое по-нормальному. Про мультиплеер очевидно, за сервера всегда надо платить, только дурак будет давать это бесплатно.
Ну вот поэтому я и вернулся к устаревшей, так как там есть подключение пользователя к пользователю, что в принципе я считаю нормально
Спасибо! Только радиус увеличу, а то отображается лишь малая часть тайлов :-)
Тогда используй, половины ширины и высоты камеры(делю сначала на TileSize, что бы получить количество возможных тайлов на экране, а половина, так камера у тебя вроде бы по середине)
Код
for(int i = (camera._pos.x/TileSize)-Camera_Width/TileSize/2;i<(camera._pos.x/TileSize)+Camera_Width/TileSize/2;i++){ for(int j = (camera._pos.y/TileSize)-Camera_Height/TileSize/2;j<(camera._pos.y/TileSize)+Camera_Height/TileSize/2;j++){ if(i<0 || i>=MapWidth) continue; if(j<0 || j>=MapHeight) continue; //вывод тайла, который на i,j } }
или экрана
Код
for(int i = (camera._pos.x/TileSize)-Screen_Width/TileSize/2;i<(camera._pos.x/TileSize)+Screen_Width/TileSize/2;i++){ for(int j = (camera._pos.y/TileSize)-Screen_Height/TileSize/2;j<(camera._pos.y/TileSize)+Screen_Height/TileSize/2;j++){ if(i<0 || i>=MapWidth) continue; if(j<0 || j>=MapHeight) continue; //вывод тайла, который на i,j } }
Сообщение отредактировал FlyOfFly - Четверг, 24 Марта 2016, 01:13