Форум » 3. Разработка игр » Unity 3D. Курс обучения » Ответить

Unity 3D. Курс обучения

D_ED_2: Здесь обсуждаем цикл статей «Игровой движок Unity 3D. Курс обучения»: http://gamesisart.ru/game_dev_unity.html Если вы заметили ошибки в тексте или у вас что-то не получается (не до конца понятна логика действий), можете задавать вопросы. Так же здесь принимаются пожелания по выбору темы для следующих статей в разделе разработки игр.

Ответов - 37, стр: 1 2 All

Lozovskyiv: Огромное спасибо за статью. Хочу просто поинтересоваться - был ли у Вас опыт в создании тактических игр?

D_ED_2: Нет, опыта не было. Но хорошо себе представляю как создать игровую механику любого жанра. А какая именно тактика? Ролевая тактика типа Final Fantasy? Стратегия-тактика типа Silent Storm или Valkyria Chronicles? Или какой-нибудь тактический экшен?

Lozovskyiv: Типа Fronti Mission, Vanguard Bandits, FF Tactics, Disgaea. Вот пример: https://www.youtube.com/watch?v=R4TM5D1yksM Давненько не было ничего нового и крутого в играх такого жанра.


Tok: Хороший урок Спасибо

плп: про камеру забыл написать

Shacler: сделал всё как указано в уроке( не заработало), тупо скопировал текст из урока( заработало, хоть и перепроверял раз 200 на наличие ошибок в коде, синтаксис и прочее).. хм..но не в этом суть. Lifetimer 2 секунды. И РОВНО СТОЛЬКО мой корабль может создавать объект лазер. После истечения времени выстрелы прекращаются и невозможно стрелять дальше. Ставишь на 5000( ну или чуть больше\меньше) стрелять можно столько сколько установил.Вопрос: а как сделать так,чтобы он стрелял столько , сколько нужно? то есть я нажал, значит выстрел, а не за время какое-то.

D_ED_2: Код написан на языке «C#», в нём нужно учитывать регистр букв. Если где-то написано с маленькой буквы, а по смыслу должно быть с большой, то программа не запустится. Скорее всего, в этом проблема. Строчка "public float lifetime = 2.0f" определяет, как долго существует лазер после появления. Если после истечения таймера отключаются вообще все лазеры, то это может быть из-за того, что объект «лазер» не был превращён в префаб. У префаба для каждой новой копии объекта будет своя переменная lifetime, и копии могут появляться в любой момент. А так, видимо, получается, что объект всего один, он исчезает через две секунды, и стрелять больше нечем. Или префаб вообще не создан, или вместо префаба к объекту «корабль» ошибочно привязан единичный объект «лазер».

iamwhoami: Очень понравился видео урок по созданию схожей с Angry Birds - https://www.youtube.com/watch?v=pWRKhQMiMms У вас не планируются видео уроки?

Skaner: Вот тут есть видеоуроки по созданию таких игр: перейти на YouTube

rioleet: Не работает код скрипта MoveTowardPlayer. using UnityEngine; using System.Collections; public class MoveTowardsPlayer : MonoBehaviour nbsp; { // Переменная для координат объекта player private Transform player; // Скорость движения врага public float speed = 1.5f; // Use this for initialization void Start () { player = GameObject.Find("playerShip").transform; } // Update is called once per frame void Update () { Vector3 delta = player.position – transform.position; delta.Normalize(); float moveSpeed = speed * Time.deltaTime; transform.position = transform.position + (delta * moveSpeed); } } показывает 7 красных ошибок.

D_ED_2: В 4-ой строчке не должно быть символов " nbsp; ". Они случайно попали туда из разметки страницы на сайте. В этой строчке должна быть только одна открывающая скобка "{". Больше ошибок не вижу. Если не помогает, напишите, в какой именно строчке показывает ошибки. (Надо будет добавить главу о том, как пользоваться дебаг-сообщениями, и как устранять ошибки).

D_ED_2: iamwhoami, видеоуроки пока не планируем. Их и так достаточно в интернете.

WookieRS: Не могу разобраться как выводить текст из переменной на новый GUI upd: разобрался [pre] using UnityEngine.UI; public class GameContoller : MonoBehaviour { private int score = 0; GameObject scoreCounter; Text scoreText; void Start () { //Находим объект scoreCounter = GameObject.Find("scoreCounter"); //Получаем компонент Text из этого объекта scoreText = scoreCounter.GetComponent<Text>(); } //Подсчет очков public void IncreaseScore(int increase) { score += increase; scoreText.text = "Score: " + score; } } [/pre]

Bobrik999: в пункте 3.5 сказано создайте скрипт и пропишите текст:using UnityEngine; using System.Collections; public class MoveTowardsPlayer : MonoBehaviour { // Переменная для координат объекта player private Transform player; // Скорость движения врага public float speed = 1.5f; // Use this for initialization void Start () { player = GameObject.Find("playerShip").transform; } // Update is called once per frame void Update () { Vector3 delta = player.position – transform.position;-подчеркивается красным delta.Normalize(); float moveSpeed = speed * Time.deltaTime; transform.position = transform.position + (delta * moveSpeed); } } у меня подчеркивается: – transform.position почему?

D_ED_2: Странно. Логически всё правильно. Возможно эта ошибка из-за преждевременного сохранения текста скрипта. Вначале нужно прицепить скрипт к обьекту "enemy", а уже потом делать сохранение этого скрипта. "transform.position" - это координаты объекта, к которому прикреплен скрипт. До прицепления эта переменная ничего не значит, а после - она как бы означает "enemy.transform.position".

Алексей: public class MoveTowardsPlayer : MonoBehaviour { // Переменная для координат объекта player private Transform player; // Скорость движения врага public float speed = 1.5f; // Use this for initialization void Start () { player = GameObject.Find("playerShip").transform; } // Update is called once per frame void Update () { Vector3 delta = player.position – transform.position;-подчеркивается красным delta.Normalize(); float moveSpeed = speed * Time.deltaTime; transform.position = transform.position + (delta * moveSpeed); } } Скрипт не работает пишет, что недопустимый символ player.position !!–!!! transform.position. Ставлю минус, а потом не даигается противник. с твоим символом не запускается game mode

Lolya: Очень интересный урок, хотя не всё объясняется. А так могу сказать, что отличный. Огромная благодарность автору и жду дальнейших уроков.

Аня: Огромное Спасибо за статью! Правда в последний момент у меня что-то пошло не так. Фон куда-то пропал и игра не получилась. Наверно что-то не так было нажато. Уже завтра посмотрю. Но так подробно на эту тему не объяснял никто!

DiS: Спасибо за данные статьи! Не могли бы вы подсказать или как-то объяснить в следующих уроках, как сделать игру жанра survival (для тех, кто в танке: выживание)? Заранее от всей души вас благодарю! И отправьте на мой email подробные этапы создания такого рода игры, пожалуйста! Email: DKolpakov2014@yandex.ru­

Serg: Добрый день, большое спасибо за урок, это самый лучший, подробный, и понятный урок из всех что я пересмотрел, но есть пара моментов. 1) Не рассказали как сделать ХП игрока и его уменьшение при столкновениях с врагами, смерть игрока и рестартер. 2) Нет ограничения игрового пространства (игрок улетает за экран) очень важный момент. 3) У меня в принципе всё получилось, только зачисление очков происходит не за убитых врагов, а за попадание по ним и мало того за столкновение с ними, также за столкновение врагов друг с другом начисляются очки.

nosTeD: Подскажите пожалуйста, когда я доделал первую часть простейшей игры (где получается летающий на фоне корабль), он не следует за курсором а всегда повёрнут в центр экрана. Почему? Кнопки работают нормально.

1nf1nitYy: Здравствуйте. Столкнулся с такой проблемой. Код идентичен коду из урока. У меня выдаёт ошибку. В написании скриптов на C# я ещё новичок. Помогите решить проблему, пожалуйста :) Мой код скрипта: using UnityEngine; using System.Collections.Generic; public class playerScript : MonoBehaviour { public float playerSpeed = 2.0f; // Изменения скорости public float currentSpeed = 0.0f; // Текущая скорость // Назначаем кнопки для перемещения public List<KeyCode> upButton; public List<KeyCode> downButton; public List<KeyCode> leftButton; public List<KeyCode> rightButton; private Vector3 lastMovement = new Vector3(); // Сохраняем последнее перемещение // Update is called once per frame void Update () { } } Скриншот ошибки. Заранее благодарю :)

Геннадий: Нужно будет изучить) Как только в свою первую игру поиграл, захотел свою сделать))

Artur_18: Здравствуйте! Решил освоить Unity, так что пока еще в этом новичок ) По данному уроку все сделал и все работает, спасибо большое! Но, единственное, когда удерживается клавиша движения, не двигается курсор. В чем может быть проблема? Заранее большое спасибо! )

Artur_18: Разобрался в чем проблема. Проблема именно с тачпадом, а не с самой программой ) Тачпад не работает одновременно с нажатой кнопкой)

Fackboy: Всё понял как делать игру

Djon: Большое спасибо за урок)) Очень понравился) Только у меня инопланетянин улетал в другую сторону после настройки гравитации))­

ve4e: У меня некоторые сложности возникли. Input.mousePosition всегда дает одинаковые координаты. поэтому кораблик поворачивается только к одной точке, но не к мыши. Не подскажите, в чем может быть проблема ? Урок отличный )

kukuvsvs: https://play.google.com/store/apps/details?id=ru.vizgames.XO Зацените, что скажите?

Новичок: У меня вражеские кораблики спамятся постоянно. Прилетают 10 штук, а затем начинают идти бесконечно

zaraki42: Скопировала ваш код в скрипте «EnemyScript» и «GameController», но все равно запускается только первая волна. Выдает ошибку NullReferenceException: Object reference not set to an instance of an object Enemy.OnCollisionEnter2D (UnityEngine.Collision2D theCollision).

D_ED_2: Мало скопировать код, нужно ещё создать связи между объектами. Нужно просмотреть свойства всех объектов, где остались пустые поля. Скорее всего, нужно к объекту GameController подключить одноименный скрипт GameController или объект enemy.

TTrue: Ничего не вышло. 1 gimp при сохранении сохраняет в своем формате и юнити его не видит надо экспортировать 2 даже после этого кнопка apple не активна 3 текстуру для материала и выбирал и таскал но она не выбирается 4 в зоне иерархии не было объекта background и вообще интерфейс у меня отличается от вашего

кирилл8989: у меня такая проблема - как бы ни старался , корабли противника влетают в меня. Коллайдеры везде есть , так же , как и написано в уроке. И еще одна - не уничтожаются противники. коды проверял, все должно было бы работать. using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyScript : MonoBehaviour { public int health = 2; void OnCollisionEnter2D(Collision2D theCollision) { if(theCollision.gameObject.name.Contains("laser")) { LaserScript laser = theCollision.gameObject. GetComponent("LaserScript") as LaserScript; health -= laser.damage; Destroy (theCollision.gameObject); } if (health <= 0) { Destroy (this.gameObject); } } } using System.Collections; using System.Collections.Generic; using UnityEngine; public class LaserScript : MonoBehaviour { public float lifetime = 2.0f; public float speed = 5.0f; public int damage = 1; void Start () { Destroy (gameObject, lifetime); } void Update () { transform.Translate(Vector3.up * Time.deltaTime * speed); } }

кирилл8989: понял,что дело не в кодах. Попробовал взять вашу сцену, но и там все тоже самое

Юрий: Отличная статья! Все работает без проблем. Исправил только в одном месте "тире" на "минус", в скрипте MoveTowardsPlayer, в строке: Vector3 delta = player.position - transform.position; Имею опыт по работе с DirectX(9.0) и с++. Так по трудоемкости, конечно, не сравнить.

emks60: Добрый день осваиваю юнити собрал вашу игру все запустилось огромная благодарность! Но есть некоторые вопросы: 1.Я пишу на макбуке версия юнити от 2019 г. При вводе в сцену компонента GUI Text для счетчика юнити ругается-старый тип компонента не поддерживается в релизе, в game текст не выводится.Пришлось создать компонент MeshText вместо GUIText и соответственно в коде исправить переменную,тогда появился текст счетчиков правда корявый и плохо редактируется.Дальше все как у вас описано, счетчики работают. 2.Собрал игру для Мас, сохранил.При запуске на компе игра идет во весь экран и не могу ее остановить и выйти, клавиша esc не срабатывает.Как посоветуете остановить игру?



полная версия страницы