AKukuruz, твой код очень странный и неверный, перепишу немного по-другому чтобы показать:
Код
program ideone;
procedure proc1(n: integer); var i: integer; begin for i := 0 to 10 do begin writeln(i); if i = n then break; end; writeln('procedure end'); // Выведется end;
begin proc1(4); end.
Этот код выведет:
Код
0 1 2 3 4 procedure end
А этот код не выведет procedure end:
Код
program ideone;
procedure proc1(n: integer); var i: integer; begin for i := 0 to 10 do begin writeln(i); if i = n then exit; end; writeln('procedure end'); // Не выведется end;
begin proc1(4); end.
break - выход из цикла, а exit - из всей процедуры/функции.
Сообщение отредактировал Lertmind - Пятница, 29 Июля 2016, 09:18
Попробуй научиться достоверно получать баг и, как написано в описании к ошибке, используй один из аргументов:
Код
-force-opengl -force-glcore -force-d3d9
(-force-opengl в документации сейчас нет) при запуске через командную строку редактора (возможно и сборки игры, одинаковые аргументы есть и там, и там). Также сменить графическое API для рендеринга редактора на DirectX9 можно через настройки PlayerSettings: для PC Standalone убрать галочку Auto Graphics API for Windows и перетащить Direct3D9 перед Direct3D11 (чтобы вернуть перетащить назад).
Стоило бы лучше охарактеризовать проблему: написать версию Unity; написать как сделать минимальный проект, чтобы увидеть проблему (например, добавление одной кнопки в пустой проект хватает для наличия проблемы?); насколько долго надо ждать.
ShortKedr, через SetControlPoints можно установить новые контрольные точки или ты о другом? Если что-то человеку захочется, он изменит, это пример. Про второй вопрос: придётся подбирать, если нужен полукруг - твой способ лучше.
namespace Bezier { public class BezierCurve { private float[] valuesX; private float[] valuesY; private float[] valuesZ;
public BezierCurve(Vector3[] vectors) { SetControlPoints(vectors); }
public void SetControlPoints(Vector3[] vectors) { valuesX = new float[vectors.Length]; valuesY = new float[vectors.Length]; valuesZ = new float[vectors.Length];
for (int i = 0; i < vectors.Length; i++) { valuesX[i] = vectors[i].x; valuesY[i] = vectors[i].y; valuesZ[i] = vectors[i].z; } }
public Vector3 GetValue(float t) { return new Vector3( BezierMath.GetValueHorner(t, this.valuesX), BezierMath.GetValueHorner(t, this.valuesY), BezierMath.GetValueHorner(t, this.valuesZ) ); } }
public static class BezierMath { // Info // http://www.gamedev.net/page/resources/_/technical/math-and-physics/practical-guide-to-bezier-curves-r3166 // http://pomax.github.io/bezierinfo/
/// <summary> /// Точка кривой методом Горнера /// </summary> /// <param name="t">Параметр от 0.0 до 1.0</param> /// <param name="controlPoints">Управляющие точки по одной из координат</param> /// <returns>Координата точки</returns> static public float GetValueHorner(float t, float[] controlPoints) { if (controlPoints.Length == 0) // А для одной точки возвращается сама точка throw new ArgumentException("controlPoints.Length == 0."); float u = 1.0f - t; float bc = 1; float tn = 1; float tmp = controlPoints[0] * u; int order = controlPoints.Length - 1;
for (int i = 1; i < order; i++) { tn *= t; bc *= (float)(order - i + 1) / i; tmp = (tmp + tn * bc * controlPoints[i]) * u; } return (tmp + tn * t * controlPoints[order]); } } }
BezierDrawer.cs Повесить на пустой объект.
Код
using UnityEngine;
[RequireComponent(typeof(LineRenderer))] public class BezierDrawer : MonoBehaviour { public Vector3[] ControlPoints = new Vector3[]{ new Vector3(-3f, 0f, 0f), new Vector3(0f, 4f, 0f), new Vector3(0f, 4f, 0f), new Vector3(3f, 0f, 0f), };
Bezier.BezierCurve curve;
void Update() { curve = new Bezier.BezierCurve(ControlPoints);
var lr = GetComponent<LineRenderer>(); const int vertexCount = 100; lr.SetVertexCount(vertexCount); for (int c = 0; c < vertexCount; c++) { Vector3 currPos = curve.GetValue((float)c / (vertexCount - 1)); lr.SetPosition(c, currPos); } } }
Tymonr, я не говорил "инфракрасных лучей для определения камеры", про HTC Vive перефразировал из этого обзора: "Далее, под потолком по углам комнаты по диагонали надо повесить две базовых станции. Это излучатели инфракрасных лучей, которые определяют положение в пространстве вашего шлема и контроллеров." Как устроен Vive не разбирался, поэтому ничего сказать не могу.
ЦитатаTymonr ()
То что в ролике — подозреваю, что все они договаривают
Скудное описание и на видео только указано наличие преблуд, про реализацию практически ничего нет. Если магия в "u-blox 6T", то ОК.
Спасибо за методы, но вряд ли dzrone3488 будет заниматься этим и делать игру только для себя, потому что кроме него никто не будет себя обременять дополнительными устройства и действиями.
FlyOfFly, такое может быть, если ты повесил этот скрипт на дочерний объекта, а родитель не в мировой точке (0, 0, 0). transform.position - задаётся в мировых координатах, а если хочешь перемещать относительно родителя, то используй localPosition:
Jericho, кстати, у тебя игрок движется от одной клетки к другой, то есть положение при остановке всегда в центре клетки? Тогда скорее всего не было смысла использовать физику. Также зависит от того, какой будет механика игры. Можно проверить что объект остановился через коллизию/триггер/близкую_к_нулю_скорость и разрешить нажатия клавиш, а после нажатия блокировать ввод через булеву переменную до следующей остановки.
dzrone3488, хе-хе. Значит проблема не в Unity, а в том, что ты не знаешь как работает акселерометр. Нет, такое у тебя не получится. Открываем википедию: "Благодаря акселерометрам осуществляется управление положением изображения на мониторе мобильного устройства и отслеживание его ориентации относительно направления постоянно действующей силы гравитации Земли". То есть акселерометр возвращает только поворот устройства относительно себя, ты не узнаешь движется ли устройство. Вот ещё кусок о гироскопе: "Изначально единственным датчиком ориентации в смартфонах был трехосевой МЭМС-акселерометр, чувствительный лишь к ускорению. В состоянии относительного покоя он позволял приблизительно оценить направление вектора силы тяготения Земли (g). С 2010 года смартфоны стали дополнительно оснащаться трехосевым вибрационным МЭМС-гироскопом, одним из первых был iPhone 4. Иногда также устанавливается магнитометр (электронный компас), позволяющий компенсировать дрейф гироскопов." Гироскоп по сути просто точный акселерометр.
По ссылки на видео чего-то не договаривают, там как-то определяют позицию.
Я в этом не разбираюсь, но слежение за позицией задача не простая. Есть даже такой проект Tango https://developers.google.com/tango/, они каким-то образом собирают информацию (компьютерное зрение и камера в том числе), но данные всё равно не точные и нужно иметь устройство совместимое с Tango. У них даже есть SDK для Unity https://developers.google.com/tango....racking. На wiki короче и лучше написано.
И посмотри на HTC Vive, там для определения положения шлема и контроллера используются инфракрасные лучи от базовых станций. Ещё вспомни Kinect. Это я к тому, что тебе стоит забыть о своей затеи.
Сообщение отредактировал Lertmind - Понедельник, 25 Июля 2016, 04:56
mrResident, да, так и есть. При добавлении WaterProDaytime и WaterProNighttime. Помню давно такой вопрос был на форуме. Сейчас погуглил, есть такая ветка http://forum.unity3d.com/threads.....353755 и там дана ссылка на Issue Tracker https://issuetracker.unity3d.com/issues....e-water. Как видно баг не исправлен, решения: * Отключать воду или компонент Water.cs. * Закомментировать [ExecuteInEditMode] в Water.cs, но тогда вода не будет отображаться нормально в редакторе. * В редакторе использовать Water Mode - Simple, в этом ответе для редактора выбирается Simple, а собираться игра будет по-нормальному: http://forum.unity3d.com/threads....2641131. * В PlayerSettings для PC Standalone убрать галочку Auto Graphics API for Windows и перетащить Direct3D9 перед Direct3D11. Возможно как-то ещё можно, я это сделал на основе фразы "This only happens when using DX11".
Sherlock, зачем конкретно не знаю, но очевидно что для какого-то эффекта воды. Посмотрел внимательней, её можно удалить, если отключить компонент Planar Reflection. Собственно для этого отражения она и нужна.
Сообщение отредактировал Lertmind - Воскресенье, 24 Июля 2016, 22:47
В общем, в 5.3.5 и 5.3.6 разрабы накосячили и добавили ассеты для 5.4, в шейдерах воды и Projector, и возможно других добавили префикс для некоторых переменных. Вопрос про воду уже был здесь и про Projector в той же ветки и отдельной темой. Для Water4Advanced открой шейдер Standard Assets\Environment\Water\Water4\Shaders\FXWater4Advanced.shader замени все unity_ObjectToWorld на _ObjectToWorld.
Добавлено (24 июля 2016, 20:42) ---------------------------------------------
Если у тебя non-Kinematic Rigidbody, то применять Rotate() нежелательно, как и другие манипуляции с Transform. В ответе How to stabilize angular motion (alignment) of hovering object? используется AddTorque(), что полагаю является единственным нормальным вариантов.
Сообщение отредактировал Lertmind - Воскресенье, 24 Июля 2016, 19:27
Fejk2015, что происходило на ноуте, когда делал скриншот? Если не было каких-то вычислений, то есть состояние простоя, то температура кажется высокой. Тебе нужно посмотреть максимальную температуру для твоего процессора и узнать, достигается ли она при нагрузке.
Ошибка, что ты указал, это просто следствии неожиданного выключения, она ничего не говорит. Тебе никто особо здесь не поможет. Почитай ответ http://answers.microsoft.com/ru-ru....4a7a593, пока не протестил ОЗУ (Memtest) и не проверил температуру, говорить не о чем. Жёсткий диск тоже стоит проверить, если конечно он не вырубается в BIOS или при загрузке с Live CD. Аккумулятор проверь, вытащить его и оставь только зарядку. Если сильно греется, то можно проц заново перемазать термопастой и прочистить всё от пыли. В случае, когда ничего из этого списка не поможет, останется только идти в ремонт, если он останется жив после твоих манипуляций.
Сообщение отредактировал Lertmind - Воскресенье, 24 Июля 2016, 00:54
dzrone3488, используешь Unity Remote? Там передаются данные от сенсоров, а игра по сути запускается на компе, поэтому есть подозрение, что плагины не участвуют.
Добавлено (23 июля 2016, 23:52) --------------------------------------------- В общем, собрал и вывел на экран планшета тремя способами: 1. Каждый кадр Input.acceleration. 2. С помощью примера от Unity отсюда. 3. С помощью примера для плагина отсюда.
Получилось, что данные от Unity к плагину различаются примерно в -10. Разница между данными от Unity тоже сопоставима, в 42.89. Так что я не вижу проблемы, используй данные от Unity и умножай на константу для настройки чувствительности.
Сообщение отредактировал Lertmind - Воскресенье, 24 Июля 2016, 01:30
Accce, если ты про встроенные функции/классы/модули Python, то смотри в документации Python соответствующей версии (похоже используется 2.6). Библиотека в Construct конечно не полная, судя по всему, только те модули, что в Construct Classic\Data\Python. Здесь даётся ссылка на интерактивную оболочку где можно получать информацию через методы dir() и help() (если help() не работает, можно использовать переменную __doc__ как print random.__doc__). Второй вопрос не понял, возможно ты о списках? Тогда если список