Снова внимательно читаем документацию. У одного из объектов должен быть Rigidbody, может тег забыл поставить или ещё что-то, разбираться тебе самому придётся.
ЦитатаValik_Fenko ()
for(int x = 0;x < 25;x+=Grid)
Ты смещаешь на 3, а надо на 1.
ЦитатаValik_Fenko ()
paths[x*y]= Instantiate(path) as GameObject;
Сразу ставить в нужную позицию можно с помощью перегруженного метода public static Object Instantiate(Object original, Vector3 position, Quaternion rotation); Чтобы обращаться к одномерному массиву как в двумерному: paths[x*25 + y] или paths[y*25 + x] в зависимости от расположения на плоскости.
Сообщение отредактировал Lertmind - Четверг, 26 Мая 2016, 18:20
Из бесплатных, для записи видео из игр есть MSI Afterburner, придётся настроить кодек/контейнер сохранения в настройках и важно сравнить цвет с оригиналом, в некоторых кодеках почему-то цвета немного другого цвета. Один минус, что курсор мыши всегда записывается на рабочем столе, даже если скрыт (например при просмотре видео), но для рабочего стола есть хорошая программа ShareX, она снимает скриншоты и видео и можно сразу выбрать окно для съёмки, для записи видео использует ffmpeg, для захвата аудио с рабочего стола программа предложить установить дополнение. ShareX для записи игр не использовал, поэтому не знаю как там с производительностью.
Добавлено (26 мая 2016, 18:02) --------------------------------------------- Ещё забыл сказать, у NVIDIA и AMD есть дополнительные программы (можно поставить с драйверами): GeForce Experience и Gaming Evolved, они умеют снимать скринкасты. Чтобы снимать лицо в углу ещё есть Open Broadcaster Software.
Тут не шоу телепатов. Грустный смайл выводится в chrome, если он не может страницу отобразить. Вариантов много: доисторический XP, Chrome, пользовательские скрипты/дополнения, ваш кривой код. У кого не работает, пусть запускают в чистых разных браузерах последних версий, для тестирования и тебе говорят.
Сообщение отредактировал Lertmind - Среда, 25 Мая 2016, 23:04
Уточняй, как именно должен следовать и при каких условиях: 1. Если используется NavMesh, через NavMeshAgent.SetDestination задаётся точка куда надо двигаться. 2. Если хочешь, чтобы объект как будто прилип на расстоянии, то можно, в том числе, через физику Fixed Joint. 3. Если препятствий нет, то можно двигать один объект к другому, с помощью Vector3.MoveTowards (очевидно, если преследующий объект с коллайдером - в Rigidbody ставим isKinematic = true). Вот изменённый пример к MoveTowards, чтобы ещё поворачивался передом к преследуемому объекту и останавливался перед ним на каком-то расстоянии:
Код
using UnityEngine;
public class Example : MonoBehaviour { public Transform Target; public float Speed; [Tooltip("Как близко приближаться к Target")] public float RelaxDistance;
void Update() { var dir = Target.position - transform.position; if (dir.sqrMagnitude > RelaxDistance*RelaxDistance) { float step = Speed * Time.deltaTime; transform.position = Vector3.MoveTowards(transform.position, Target.position, step);
transform.LookAt(Target); } } }
Сообщение отредактировал Lertmind - Среда, 25 Мая 2016, 06:29
ShortKedr, не знаю, как именно думал MANMANA, у меня было предположение, что можно добавить камеру на другой стороне карты со смещением равным длине карты, чтобы сначала рендерить ту сторону карты, а потом уже с камеры у игрока. Ещё 2 камеры, чтобы стоя в углу карты, видеть три другие стороны. Это к реализации с перемещением игрока, когда он выйдет за край.
Добавлено (25 мая 2016, 01:00) --------------------------------------------- Кстати, вроде похоже на реализацию порталов, в которой я так и не разобрался, но хотел.
Добавлено (24 мая 2016, 01:46) --------------------------------------------- Ordan, NavMesh изначально для 3D, есть видеоурок как адаптировать под 2D сверху, но сбоку будет глупо использовать, если вообще получится нормально сделать.
drjokerface, мне кажется под CE5 будет сложнее писать из-за небольшого сообщества. В Unity тоже полно багов, в том числе были с освещением и тенями, даже один человек исправлял освещение. Не знаю насколько открыт CE5, но в UE4 при желании можно исправить самому баги и собрать движок. Если проект только под мощные платформы, тогда полагаю в графической части UE4 и CE5 передовые и хорошо подойдут.
CleverRus, просто уточнил, если человек захочет использовать этот проект. Он не написал какие именно "геометрические фигуры", но это уже его проблемы. За ссылку всё равно спасибо.
CleverRus, там сделано плохо: * Фигуры определяются по точкам, когда курсор останавливается, проще тогда было не вести, а нажимать на места, где должны быть углы. * Можно было написать универсальный метод для всех правильных многоугольников, а там отдельный похожий код для треугольника и квадрата. * Для фигур сложнее, чем правильные многоугольники, будет непрактично и придётся писать дополнительный код, чтобы заносить данные о фигуре. * И так как там только по точкам, не получится распознавать фигуры с кривыми сторонами. В общем, лучше поискать алгоритмы посложнее, они точно есть, как лучше не знаю и мне лень гуглить.
Сообщение отредактировал Lertmind - Суббота, 21 Мая 2016, 20:19
1nt3g3r, я имел в виду, что сомневаюсь, что много людей оценит и установит игру, следовательно при прочих равных меньше заработаете. Очень давно была игра на старых консолях, которая управлялась только с помощью голоса, как эксперимент это было нормально, наверно игра даже окупилась, но такие игры не популярны в принципе. Если добавить голосовое управление как дополнение, то всё равно придётся проверять популярна ли эта функция, иначе нет смысла её поддерживать.
Неудачная идея, если хотите заработать деньги, а как эксперимент сойдёт. Полезнее рисовать руками на бумаге (особенно для детей) или графическом планшете, на худой конец пальцем по сенсорному экрану. Голос никаких возможностей не даёт, только ограничивает.
using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic;
#if UNITY_5_3_OR_NEWER public class TessellationVertexEffect : BaseMeshEffect #else public class TessellationVertexEffect : BaseVertexEffect #endif { #if UNITY_5_3_OR_NEWER public override void ModifyMesh(VertexHelper vh) { if (!IsActive()) return;
List<UIVertex> list = new List<UIVertex>(); for (int i = 0; i < vh.currentVertCount; i++) { var v = new UIVertex(); vh.PopulateUIVertex(ref v, i); list.Add(v); }
ModifyVertices(list);
vh.Clear(); for (int i = 0; i < list.Count; i += 4) { UIVertex[] v = new UIVertex[4] { list[i + 0], list[i + 1], list[i + 2], list[i + 3] }; vh.AddUIVertexQuad(v); } } #endif
public void ModifyVertices(List<UIVertex> verts) { if (verts.Count == 0) { // Nothing to do... return; }
// Assume we are getting quads if ((verts.Count % 4) != 0) { Debug.LogError("Modifier expects vertices to be arranged as quads"); return; }
// Tessellate int startingVertexCount = verts.Count; for (int i = 0; i < startingVertexCount; i += 4) { TessellateQuad(verts, i); }
// Remove old quads from the start of the list verts.RemoveRange(0, startingVertexCount); }
// Position deltas, A and B are the local quad up and right axes Vector3 dPdA = v2.position - v1.position; Vector3 dPdB = v1.position - v0.position;
// Determine how many tiles there should be float rcpTessSize = 1.0f / Mathf.Max(1.0f, m_tessellationSize); int aQuads = Mathf.CeilToInt(dPdA.magnitude * rcpTessSize); int bQuads = Mathf.CeilToInt(dPdB.magnitude * rcpTessSize);
// Build the sub quads float rcpAQuads = 1.0f / (float)aQuads; float rcpBQuads = 1.0f / (float)bQuads; float startBProp = 0.0f; for (int b = 0; b < bQuads; ++b) { float endBProp = (float)(b + 1) * rcpBQuads; float startAProp = 0.0f; for (int a = 0; a < aQuads; ++a) { float endAProp = (float)(a + 1) * rcpAQuads;
// Append new quad to list verts.Add(Bilerp(v0, v1, v2, v3, startAProp, startBProp)); verts.Add(Bilerp(v0, v1, v2, v3, startAProp, endBProp)); verts.Add(Bilerp(v0, v1, v2, v3, endAProp, endBProp)); verts.Add(Bilerp(v0, v1, v2, v3, endAProp, startBProp));
Color Bilerp(Color v0, Color v1, Color v2, Color v3, float a, float b) { Color top = Color.Lerp(v1, v2, a); Color bottom = Color.Lerp(v0, v3, a); return Color.Lerp(bottom, top, b); }
Переход основывался на этом, но использую циклы для заполнения, так как GetUIVertexStream и AddUIVertexTriangleStream работают не так, как хотелось бы. Из-за первого метода в общем-то (смотрел исходный код UI), в ShadowEffect появляются лишние 4 вершины на букву, которые можно было избежать (в OutlineEffect ещё больше, так как он состоит из 4 теней от ShadowEffect). В сцене CylinderUI у Canvas стоит Render Mode -> Screen Space, чтобы было в мире - изменяем на World Space.
Добавлено (20 мая 2016, 19:31) --------------------------------------------- ShortKedr, проблема в том, что здесь "ошибка XY". Автор вопроса стал решать задачу не тем методом.
Сообщение отредактировал Lertmind - Пятница, 20 Мая 2016, 19:24
Моё личное мнение: знатная хрень, каких много. Из ошибок: 1. Странный выбор персонажей, правая стрелка сдвигает их вправо, а левая - влево, обычно наоборот. (возможно ошибаюсь, всегда так казалось) 2. У меня нет букв (точнее текстур):
Полагаю ты пытался оптимизировать, на всякий случай: Android 6.0.1 (CyanogenMod 13.0), Samsung GT-P3110, Видеоускоритель: PowerVR SGX540. 3. К оформлению поста: скриншоты из игры надо выкладывать в png. Награда:
Сообщение отредактировал Lertmind - Среда, 18 Мая 2016, 06:33
using UnityEngine; using System.Collections; using System;
[Serializable] public class WeatherData { public Main main; }
[Serializable] public class Main { public float temp; public float pressure; }
public class Weather : MonoBehaviour { IEnumerator Start() { string url = "api.openweathermap.org/data/2.5/weather?q={0}&APPID={1}&units=metric"; string city = "Moscow"; string appid = ""; // API key url = string.Format(url, city, appid);
WWW www = new WWW(url); yield return www;
//print(www.text); var w = JsonUtility.FromJson<WeatherData>(www.text); print("Temp: " + w.main.temp + ", Pressure: " + w.main.pressure); } }
Для JsonUtility приходится делать иерархию классов, я сделать только для температуры и давления. В appid надо ставить ключ, который получаешь при регистрации. Очевидно, такой код нельзя вставлять в публичный, потому что ограничение на запросы сразу истечёт, лучше на своём сервере получать данные и потом уже передавать приложению. Этот код получает такую JSON:
mrResident, если что, есть перевод Game Programming Patterns - Robert Nystrom: http://live13.livejournal.com/462582.html, к сожалению в переводе есть достаточно ошибок и нет подсветки форматирования, я присылал ему кучу замечаний, но он их не исправил (нет времени).
Сообщение отредактировал Lertmind - Вторник, 17 Мая 2016, 20:15
Gamingearz, Firefox 46.0.1, Win7 SP1 x86. Проверю в хроме.
Добавлено (17 мая 2016, 18:13) --------------------------------------------- В Chrome 49.0.2623.112 (использую portable версию) такого ужаса нет, но всё равно можно поймать момент, когда один звук (другой выключен) начинает воспроизводиться чаще, а после его выкл/вкл уже нормально.
Добавлено (17 мая 2016, 18:22) --------------------------------------------- На всякий случай, я брал звуки интерфейсов слева Wood_04, справа Snow_01. Выключаю и включаю правый звук несколько раз, с какого-то раза левый звук (правый выключен) начнёт чаще звучать.