В юнити 4.6.1 был создан танк на WheelColliders, полностью настроен и отлажен. При переходе на юнити 5 (в которой они обновили PhysX) танк был полностью сломан, даже не смог с места сдвинутся.
Когда начал разбираться- оказалось изменились параметры настройки колеса. Добавился параметр Force App Point Distance, параметры асимптот и екстремумов кривых трения были изменены на 0.0 — 1.0 (ранее они были по несколько тысяч).
Скрин
Замечу, что при открытии старого проекта в юнити 5 он сам перенастраивает параметры этих компонентов.
Можно открыть демо проект импортировав в ассетах проект Vehicles (самолеты, машины) и глянуть настройки колес. На самолете WheelCollider виглядит достаточно странно…
Скрин
… главное колесо в одном месте, точка физики (или как ее назвать)- в другом. Повторить такое у меня не вышло.
Сами же колеса при старте карты намертво прилипают к земле, и нужно немалая сила чтоб сдвинуть их с места.
Есть способ, который вроде бы помогает — скрипт, который дает небольшое кручение колес при старте карты (вешается на геймобжекты с вилл коллайдером):
using UnityEngine;
using System.Collections;
public class WheelsStart : MonoBehaviour
{
void Start ()
{
GetComponent<WheelCollider>().motorTorque = 0.1f;
}
}
С новой физикой добавились хорошие возможности бокового скольжения, без резких дерганий при сцеплении, однако над настройкой колес еще придется попотеть…
Правда куча нелогичных дырок в коде (как и писал сам автор), типа объект с этим id еще не был создан на клиенте, а сервер уже пытается не нему обратиться. Короче совсем всё печально.
Не все такие как вы, чтоб «за 10 минут всё прочитать и изучить». За это время хотя что про Network View прочесть и в документации найти (по базовым понятиям устройства серверной части) команды создания сервера и коннекта клиента.
А статья например для такого случая как у меня- пока сетевик дописывает сервер, протоколы передачи и т. д. на клиентской части нужно по-быстрому состряпать сервер для «локального» теста и подготовки данных для передачи через сеть. А когда релиз на носу и жопа горит то не особо хочется тратить время на углубленное изучение этого.
Спасибо за статью! небольшая очепятка:
Таким образом, клиентская и серверная логика есть, теперь для нее нужно сделать управление MainMenu.cs:
public class MultiplayerMenu
За ссылку на VDC отдельный плюс) 7 лет сорсом страдал)
Если совсем будет бесить эта глюконутость и будет время- возможно перенесу на ПЛИС. На каком-то сраном Max2 сделаю)
Пару месяцев написал AVR микроконтроллер на плисе. Правда программу пришлось на ассемблере писать. Если бы эту программу на ассемблер переписать (сложнее всего будет с драйвером экранчика) и сравнить работу меги и моего мк) Правда памяти не хватит на эту программу… Нужно плис менять… (про внешнюю память не напоминать)).
Устройство работает месяцами и вовремя включает и отключает бойлер. С этим проблем нету. Сбоев времени не было ни разу. Странно что потом на кнопки криво реагирует.
Подебажить было бы интересно конечно…
Не помню зачем я это делал, но видимо вместо того, чтобы сделать проверку if(Hours>23)Hours-=23 я написал такое) (я вроде как отказался от этого, но почему-то тут оставил)
Вы выделили этот кусок кода, но упустили самый интересный:
int StartTime= (StartH*3600)+(StartM*60)+StartS;
int EndTime= (EndH*3600)+(EndM*60)+EndS;
int CalcTime;
Извиняюсь что не по теме, но вижу тут много хороших специалистов, которые, возможно, увидят мой пост и смогут помочь…
Я несколько лет работаю с микроконтроллерами AtMega и заметил, что при продолжительной работе их начинает «глючить». Либо что-то я не правильно делаю.
Вот такой пример. Пару месяцев назад собрал реле времени для бойлера нагрева воды (микроконтролер AtMega 16). Включает бойлер на 2 часа в 5 часов вечера и 5 утра.
2 кнопки сбоку- установка времени, большая красная кнопка- дополнительно включить бойлер на 2 часа. Ну не важно. Устройство работает нормально 2 дня, неделю, 2 недели (вроде бы), а если более (через месяц) его начинает глючить. Время показывает правильно, но устройство перестает реагировать на кнопки. (обработка кнопок- самый простой вариант в цикле, через _delayms() (без прерываний, и не хотел дополн. переменные писать).
Проверял с большой красной кнопкой (должен загореться желтый светодиод и замыкается реле (которое бойлер запустит) к тому же на экран выводится дополнительная строка таймера обратного отсчета (сколько осталось до выключения)). Бывает нажмешь ее раз в месяц- реле включается, светодиод горит, но на экран строка не выводится. Бойлер через 2 часа не выключается. При повторном ее нажатии- должно отключить дополнительное время и вернутся в нормальное состояние- не реагирует. Или вчера нажимаю- выводит на экран отсчет времени не 2 часа, а 7 часов, n минут…
Как только перезапускаю устройство- работает нормально…
Переполнений памяти в принципе быть не может…
На всякий случай о питании…
Блок питания- импульсный (от DVD проигрывателя, +5в, +12в) +стабилизатор на 5в от линии 5в (хотя там 6в).
Питание реле- от 12 вольт этого БП. Запускаю через транзистор кт972а.
Да, я понял о чем вы. У меня просто этот вывод идет не в коде программы, а в алу. Операнд источник- Port0, операнд приемник- Port0, операция- побитная инверсия. Результат выводится в порт.
В прошивке один раз пишут код установки времени, шьют, запускают, потом код удаляют. По крайней мере я так делал…
Хотел найти этот скрипт и заблокировать, но видимо кто-то это уже сделал до меня(
geektimes.ru/company/medgadgets/blog/248884
medgadgets.ru/shop/levitirujuschij-globus.html
В юнити 4.6.1 был создан танк на WheelColliders, полностью настроен и отлажен. При переходе на юнити 5 (в которой они обновили PhysX) танк был полностью сломан, даже не смог с места сдвинутся.
Когда начал разбираться- оказалось изменились параметры настройки колеса. Добавился параметр Force App Point Distance, параметры асимптот и екстремумов кривых трения были изменены на 0.0 — 1.0 (ранее они были по несколько тысяч).
Замечу, что при открытии старого проекта в юнити 5 он сам перенастраивает параметры этих компонентов.
Можно открыть демо проект импортировав в ассетах проект Vehicles (самолеты, машины) и глянуть настройки колес. На самолете WheelCollider виглядит достаточно странно…
… главное колесо в одном месте, точка физики (или как ее назвать)- в другом. Повторить такое у меня не вышло.
Сами же колеса при старте карты намертво прилипают к земле, и нужно немалая сила чтоб сдвинуть их с места.
Есть способ, который вроде бы помогает — скрипт, который дает небольшое кручение колес при старте карты (вешается на геймобжекты с вилл коллайдером):
С новой физикой добавились хорошие возможности бокового скольжения, без резких дерганий при сцеплении, однако над настройкой колес еще придется попотеть…
А статья например для такого случая как у меня- пока сетевик дописывает сервер, протоколы передачи и т. д. на клиентской части нужно по-быстрому состряпать сервер для «локального» теста и подготовки данных для передачи через сеть. А когда релиз на носу и жопа горит то не особо хочется тратить время на углубленное изучение этого.
Спасибо за статью! небольшая очепятка:
За ссылку на VDC отдельный плюс) 7 лет сорсом страдал)
AIDA64 показывает:
Частота- 1189 МГц
Частота памяти — 3505
c2n.me/3b9VuYb
Не разгонял.
Выдает 440-453
На GTX770 полет отличный (скачал исходник, сбилдил). Показывает 61 fps, хотя мне кажется циферка врет немного).
Пару месяцев написал AVR микроконтроллер на плисе. Правда программу пришлось на ассемблере писать. Если бы эту программу на ассемблер переписать (сложнее всего будет с драйвером экранчика) и сравнить работу меги и моего мк) Правда памяти не хватит на эту программу… Нужно плис менять… (про внешнюю память не напоминать)).
Подебажить было бы интересно конечно…
Стабилизатор вроде как линейный. Получает 6.2в, выдает 5в и дальше на конденсатор…
Реле висит на другой линии питания…
Вы выделили этот кусок кода, но упустили самый интересный:
Помойму это очень грубо.
Я несколько лет работаю с микроконтроллерами AtMega и заметил, что при продолжительной работе их начинает «глючить». Либо что-то я не правильно делаю.
Вот такой пример. Пару месяцев назад собрал реле времени для бойлера нагрева воды (микроконтролер AtMega 16). Включает бойлер на 2 часа в 5 часов вечера и 5 утра.
cs622028.vk.me/v622028863/b429/4pqbA4ND30g.jpg
cs622028.vk.me/v622028863/b417/E34uBXfpNeg.jpg
2 кнопки сбоку- установка времени, большая красная кнопка- дополнительно включить бойлер на 2 часа. Ну не важно. Устройство работает нормально 2 дня, неделю, 2 недели (вроде бы), а если более (через месяц) его начинает глючить. Время показывает правильно, но устройство перестает реагировать на кнопки. (обработка кнопок- самый простой вариант в цикле, через _delayms() (без прерываний, и не хотел дополн. переменные писать).
Проверял с большой красной кнопкой (должен загореться желтый светодиод и замыкается реле (которое бойлер запустит) к тому же на экран выводится дополнительная строка таймера обратного отсчета (сколько осталось до выключения)). Бывает нажмешь ее раз в месяц- реле включается, светодиод горит, но на экран строка не выводится. Бойлер через 2 часа не выключается. При повторном ее нажатии- должно отключить дополнительное время и вернутся в нормальное состояние- не реагирует. Или вчера нажимаю- выводит на экран отсчет времени не 2 часа, а 7 часов, n минут…
Как только перезапускаю устройство- работает нормально…
Переполнений памяти в принципе быть не может…
На всякий случай о питании…
Блок питания- импульсный (от DVD проигрывателя, +5в, +12в) +стабилизатор на 5в от линии 5в (хотя там 6в).
Питание реле- от 12 вольт этого БП. Запускаю через транзистор кт972а.
Код (если нужен) pastebin.com/Qb2t7fwH
В чем может быть проблема? В коде- вряд ли. Несколько дней работает без проблем, потом глючит…