Я не возражаю Главное, чтобы не забывали делиться самым лучшим. Правда, я оставлю за собой право добавлять в первое сообщение то, что лично мне понравилось
Добавлено (30 мая 2015, 18:51) --------------------------------------------- Я убрал ссылки на торренты, так как это нарушение правил. Остальное всё легально
И у меня заработало! Нужно, чтобы тут chrome://flags/ было под WebGL: Enable. А потом ещё перезагрузить забыл
Фигово, что по умолчанию он отключен. Нужно будет давать инструкцию, типа этой. Такую же нужно будет для Opera найти. Такие очевидные вещи, а они не могут сделать WebGL включённым по умолчанию
Storm54, я смотрел про TFS. Он встроен в VS2013 Ultimate (взял триал на 90 дней). По-моему, это целая настраиваемая система, где можно выбрать в качестве VCS - Git. Немного разберусь и нужно будет кого-нибудь из знакомых начинающих попросить попробовать реализовать простенький проект совместно. Интересно было бы втроём. Не очень себе представляю совместную работу. Как бы не получилось, как в басни Крылова: "Однажды Лебедь, Рак, да Щука" В первые разы, наверное, так и будет получаться, но учиться же когда-нибуду надо начинать.
По Git пока только знаю, как сохранять изменения на github.com.
А ещё в TFS можно настроить, например, Scrum. А вот этот самый Scrum кто-нибудь использует или для Unity проектов это неактуально?
Сообщение отредактировал 8Observer8 - Суббота, 13 Июня 2015, 11:21
Что интересно, если посмотреть вакансии Unity C#, то нигде не указывают требования знать Scrum и другие Agile методологии. А если смотреть вакансии C# без Unity, то довольно часто. Особенно в филиалах западных фирм.
Разбираюсь, что нужно по-минимуму, чтобы собирать и запускать apk файлы Unity на эмуляторе Android.
Я посмотрел в настройках "Player Settings..." минимальный API, который поддерживает Unity - "API level 9". Какой версии API лучше поставить, чтобы гарантированно запускалось на эмуляторе? API 10 нормально?
Скачал архив "android-sdk_r24.3.3-windows.zip". Посмотрите, что можно убрать, а что нужно добавить:
"Google USB driver" не нужен для эмулятора? Это для реального устройства?
Если есть возможность, то прокомментируйте, что нужно, а что нет. Заранее спасибо за помощь.
Сообщение отредактировал 8Observer8 - Пятница, 03 Июля 2015, 15:04
Потянет ли UE4 на такой машинке? ОС: Windows 8.1 x64 Процессор: AMD A8-6410 APU 2.0 ГГц (При разгоне доходит до 2.4 ГГц) RAM: 8 GB Видеокарта: AMD Radeon R5 + Radeon HD 8570М (2 GB)
Процессор у вас эквивалент i5, а у меня i3 (2-x ядерный) - тянет. Правда, собирается в exe минут 5. У вас два ядра?. Для нормальной работы нужно 4. Видеокарта у вас мощнее. У меня GT540M (1 GB). Нормально - не тормозит. У вас видеокарта даже мощнее, чем требуется.
А у тебя вопрос в нехватке дискового пространства?
Ага. На ноуте каждые 100 МБайт на счету
Я поставил API 10 (галочки оставил, как в первом сообщении). Поставил JDK8. В Unity открыл: в меню "Edit" -> "Preferences..." -> "External Tools". Выставил значения: Android SDK Location: C:\Program Files\Android\android-sdk-windows JDK Location: C:\Program Files\Java\jdk1.8.0_25
Открыл в меню "File" -> "Build Settings..." -> выбрал "Android" -> нажал кнопку "Player Settings...". Выставил значения: Company Name: EIA Product Name: SquareSnake Bundle Identifier: com.EIA.SquareSnake
Заметил, что в поле "Minimum API Level" установлено значение "Android 2.3.1 'Ginderbread' (API level 9)". У меня установлен "Android 2.3.3 (API 10)"
Нажимаю кнопку "Build". Выскакивает сообщение:
Попробую поставить API 21, но выберу, то что я ставил с API 10:
Добавлено (04 июля 2015, 14:09) --------------------------------------------- Установил API 21. Собрал приложение в файл с именем SquareSnake.apk
Открыл "AVD Manager". Создал виртуальное устройство с параметрами:
Запустил эмулятор. Дождался, когда загрузится. На всякий случай, сразу снял блокировку клавиатуры в эмуляторе.
Скопировал файл SquareSnake.apk в каталог: "C:\Program Files\Android\android-sdk-windows\platform-tools"
Открыл cmd. Перешёл в каталог "platform-tools". Набрал команду: adb install SquareSnake.apk
Установилось успешно, но меня смущает строка: rm failed for -f, Read-only file system
Запускаю приложение в эмуляторе. Выдаёт ошибку, что устройство не поддерживает приложение:
Добавлено (04 июля 2015, 14:09) ---------------------------------------------
ЦитатаFrosten ()
BlueStacks - лучший эмулятор для андроида.
Спасибо! Попробую BlueStacks.
Сообщение отредактировал 8Observer8 - Суббота, 04 Июля 2015, 13:33
Поставил Andy. При запуске выскакивает ошибка после которой Andy завершается:
С BlueStacks работает нормально. Для установки apk нужно запусить BlueStacks -> два раза кликнуть по .apk. Приложение появляется среди приложений BlueStacks.
BlueStacks, как мне показалось, скачал игры из интернета. Я, наверное, просмотрел и можно было галочку убрать? Весит теперь папка с установленным BlueStacks 2 ГБайта.
Сделал небольшой пример, чтобы показать проблему: скачать
Проблема: анимация в 2D срабатывает не сразу после нажатия клавиши
Скрипт:
Код
using UnityEngine; using System.Collections;
public class Player : MonoBehaviour { private enum PlayerState { IdleUp, IdleDown, IdleRight, IdleLeft, MoveUp, MoveDown, MoveRight, MoveLeft }
private enum Direction { Up, Down, Right, Left }
private Direction currentDirection;
private Animator anim;
// Use this for initialization void Start() { anim = GetComponent<Animator>();
currentDirection = Direction.Up; }
// Update is called once per frame void Update() { if (Input.GetKey(KeyCode.W)) { anim.SetInteger("state", (int)PlayerState.MoveUp); currentDirection = Direction.Up; } else if (Input.GetKey(KeyCode.S)) { anim.SetInteger("state", (int)PlayerState.MoveDown); currentDirection = Direction.Down; } else { if (currentDirection == Direction.Up) { anim.SetInteger("state", (int)PlayerState.IdleUp); } else if (currentDirection == Direction.Down) { anim.SetInteger("state", (int)PlayerState.IdleDown); } } } }
Добавлено (12 июля 2015, 23:51) --------------------------------------------- Получается, что если двигаться вверх и вниз (W и S), то перемещение срабатывает быстрее, поэтому танк, к примеру, начинает ехать задом.
Добавил перемещение:
Код
using UnityEngine; using System.Collections;
public class Player : MonoBehaviour { private enum PlayerState { IdleUp, IdleDown, IdleRight, IdleLeft, MoveUp, MoveDown, MoveRight, MoveLeft }
private enum Direction { Up, Down, Right, Left }
private Direction currentDirection;
private float currentSpeed = 0.5f;
private Animator anim;
// Use this for initialization void Start() { anim = GetComponent<Animator>();
currentDirection = Direction.Up; }
// Update is called once per frame void Update() { if (Input.GetKey(KeyCode.W)) { anim.SetInteger("state", (int)PlayerState.MoveUp); currentDirection = Direction.Up; transform.Translate(Vector3.up * currentSpeed * Time.deltaTime); } else if (Input.GetKey(KeyCode.S)) { anim.SetInteger("state", (int)PlayerState.MoveDown); currentDirection = Direction.Down; transform.Translate(Vector3.down * currentSpeed * Time.deltaTime); } else { if (currentDirection == Direction.Up) { anim.SetInteger("state", (int)PlayerState.IdleUp); } else if (currentDirection == Direction.Down) { anim.SetInteger("state", (int)PlayerState.IdleDown); } } } }
Сообщение отредактировал 8Observer8 - Воскресенье, 12 Июля 2015, 23:52
seaman, огромное спасибо, что откликнулись! Давайте по порядку.
Цитатаseaman ()
Во первых у Idle как я понял как таковой анимации вообще нет, а сначала переходит именно на нее.
У меня есть две анимации Idle: - PlayerIdleUp - PlayerIdleDown
В аниматоре PlayerIdleUp установлена поумолчанию. У меня подозрение, что здесь, что-то не так и возможно вы правы, потому что когда я запускаю игру и одновременно вытаскиваю Animator, то не вижу проигрывание (жёлтой полоски) под анимацией PlayerIdleUp в аниматоре.
И того у меня сейчас четыре анимации: - PlayerIdleUp (стоим и смотрим вверх) - PlayerIdleDown (смотрим вниз) - PlayerUp (движение вверх) - PlayerDown (движение вниз)
В аниматоре я их соединил стрелками. Создал целую переменную state. Её значения: 0: PlayerIdleUp 1: PlayerIdleDown 4: PlayerUp 5: PlayerDown
На остальные вопросы я потом отвечу. Помогите мне сначала понять, что не так делаю сейчас.
Вы говорите:
Цитатаseaman ()
Следовательно пока не закончится Idle - Move не запустится. А у Idle нет анимации.
А почему же тогда после запуска игры, нажатия кнопки W - анимация PlayerIdleUp переходит в анимацию PlayerUp? Если нажать вниз, то будет переход на анимацию движения PlayerDown, но с задержкой. Как же нет Idle если есть PlayerIdleUp?
Сообщение отредактировал 8Observer8 - Понедельник, 13 Июля 2015, 09:53
Что такое анимация?- изменение состояния. Какое изменение в анимациях - PlayerIdleUp, PlayerIdleDown?
Idle - это анимация покоя. Я не понимаю, что в этом плохого.
Цитатаseaman ()
А вот длится этот кадр - секунду. И пока не пройдет эта секунда в другое состояние танк не перейдет. Уберите галки HasExitTime у всех транзишн.
Теперь я понимаю, почему переход из анимации покоя в анимацию движения срабатывает не сразу. Это в теории, но на практике я убрал все HasExitTime, но ничего не изменилось.
Добавлено (13 июля 2015, 11:10) ---------------------------------------------
Цитатаseaman ()
А лучше - смотрите мои уроки. Там как раз танчики делаем.
Спасибо большое! Посмотрю. Я как раз хотел сделать клон этой игры для тренировки.
Добавлено (13 июля 2015, 11:11) ---------------------------------------------
Ну на самом деле ничего плохого. Только зачем такая длительность? Один кадр - он и есть один кадр...
Почему же тогда после того, как я убрал HasExitTime у меня танк попрежнему начинается двигаться до того, как срабатывает анимация?
Добавлено (13 июля 2015, 11:50) ---------------------------------------------
Цитатаseaman ()
Когда создавали анимации случайно нажали кнопку добавления события. Я в проекте не смог найти где это событие. Если найдете - просто удалите. Но проще - заново пересоздать все анимации.
Спасибо! Не проще заново создать анимации. События обозначаются палочками. Нужно выделить палочку и нажать Delete:
Сообщение отредактировал 8Observer8 - Понедельник, 13 Июля 2015, 11:55
Не может быть. Куда бы они делись? У меня одно событие в анимации PlayerUp. Да, случайно добавил. Посмотрите внимательно. Нужно в "Hierarchy" чтобы было выделен спрайт Player. В меню нужно выбрать "Window" -> "Animation". В списке анимаций выбрать "PlyaerUp". Напишите, пожалуйста, есть ли там палочка. Для меня это важно, чтобы знать на будущее, что может быть такой глюк.
Добавлено (13 июля 2015, 12:23) --------------------------------------------- seaman, я посмотрел ваш урок (часть с анимацией танка). У вас нет состояний покая для танка. Как вы их собираетесь добавлять? Если есть, то покажите, пожалуйста, где.
Скорее всего сделаю - просто обнулю speed, а когда едет speed = 1;
Со скоростью понятно. Но этого мало, так как танк будет буксовать на месте.
Добавлено (13 июля 2015, 14:32) --------------------------------------------- Ура! Я нашёл ошибку! Нужно было в настройках установить для "Transition Duration" значение 0 (для каждого Transition). Причём, галочка HasExitTime должна быть действительно убрана для всех Transition.
Добавлено (13 июля 2015, 16:53) --------------------------------------------- Наиболее правильно привлечь "Any State":
Для каждого Transition в Settings: - галочка "Has Exit Time" должна быть убрана - значение "Transition Duration (s)" нужно выставить в ноль - убрать галочку "Can Transition To Self"
Добавил постоянный звук двигателя и звук газа, при нажатии кнопок WASD (или стрелок) Tanks_v1.1.0 (проект)
P.S. Если кому-то пригодилась информация, то, пожалуйста, плюсуйте
Сообщение отредактировал 8Observer8 - Понедельник, 13 Июля 2015, 16:59
Помогите, пожалуйста, реализовать столкновения двух танчиков: Player, Enemy. Пока, что у меня есть максимально упрощённый пример. Спрайт Enemy движется вниз с помощью transform.Translate(...), а на пути у него спрайт Player. На обоих объектах стоит BoxCollider2D (установлен флаг IsTrigger) и Rigidbody2D (установлен флаг IsKinematic)
Танком Player управляет пользователь. Когда танки врезаются, то в методе OnTriggerEnter2D я обоим спрайтам устанавливаю скорость в ноль. Дальше никак не могу сообразить, как продумать логику. Натолкните, пожалуйста, на правильные размышления.
Я хотел при столкновении, к примеру, Player'а с препятствием занулять ему скорость в этом направлении. Допустим, стоит вражеский танк, а Player перемещаем снизу вверх. Он сталкивается, но дальше не может ехать, так как скорость в этом направлении будет зануляться в OnTriggerEnter2D (или OnTriggerStay2D). А в других направлениях Player может ехать. Но эта идея провалилась. Прошу помощи навести на правильный путь.
Цитатаseaman ()
Это тоже ошибка - кинематик нельзя ставить.
В этом случае, у меня спрайты улетают. Я с физикой в 2D столкнулся впервые. Посоветуйте, как быть. Подскажите, как должно быть наиболее правильно?
Добавлено (14 июля 2015, 22:30) --------------------------------------------- Дело в том, что если я добавлю физику 2D, то я смогу двигать вражеские танки. Это неправильно. Разве нет?
Сообщение отредактировал 8Observer8 - Вторник, 14 Июля 2015, 22:31