Страница 1 из 1

Персонаж передвигается рывками [РЕШЕНО]

СообщениеДобавлено: 07 июл 2018, 09:29
morosit
Здравствуйте. На сцене есть фон, прямоугольник, и шар (игрок).
Шар передвигается прыжками, в редакторе Unity всё нормально, но при загрузке на телефон (Android) начинает как бы подвисать, и передвигается рывками. Например шар подпрыгивает, потом сразу оказывается внизу, вместо того что бы плавно опустится.
Прямоугольники выступают платформами по которым шар прыгает. Ранее такая проблема проявлялась когда я добавил ко всем платформам источник света, оставил только главный свет проблема пропала.
Теперь вот опять появилась, какое то время не делал билдов, поэтому не знаю после какого изменения, но на данный момент на сцене оставил только фон, 2 бордера, 1 платформа, и шар. Да и свет конечно (хотя свет пробывал отключать).
Помогите пожалуйста понять почему игрок передвигается рывками!?
Синтаксис:
Используется csharp
       
        public Rigidbody player;
        public Transform playerT;

        void OnMouseDown ()
        {
                Vector3 mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition); //переменная "позиция мышки"
                player.AddForce (Vector2.up * 300f);
                if (mousePos.x > playerT.position.x) {
                        player.AddForce (Vector2.right * 15f);
                } else {
                        player.AddForce (Vector2.left * 15f);
                }
        }

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 10:27
1max1
а на телефоне разве Input.mousePosition работает также как и touch.position?
попробуй заменить вот как-то так https://docs.unity3d.com/ScriptReferenc ... ition.html

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 11:39
morosit
Определёно не так же, хотя я не разобрался как именно )
Читал в документации что лучше использовать touch, а не функции мыши, но не разобрался пока, а во всех видео примерах/уроках используются функции мыши.
mousePosition я использую для определения текущей позиции игрока, и соответствующего применения силы - Left или в Right.
И если закоментировать этот участок кода персонаж все равно двигается рывками
Синтаксис:
Используется csharp
void OnMouseDown ()
        {
                //Vector3 mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition); //переменная "позиция мышки"
                //Touch touch = Input.GetTouch(0);
                //if (touch.position.x > playerT.position.x) {
                //      player.AddForce (Vector2.right * 15f);
                //} else {
                //      player.AddForce (Vector2.left * 15f);
                //}
                player.AddForce (Vector2.up * 300f);
        }

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 12:00
Anonymyx
В билде тоже рывками двигается? Проверьте.

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 12:00
1max1
то есть вверх нормально, а вниз рывками? и больше никакие скрипты на него не влияют?

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 12:08
morosit
Я так понимаю, что touch показывает номер определённой точки на экране, а не векторные координаты x,y?

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 12:14
1max1
Чево?
Синтаксис:
Используется csharp
Touch touch = Input.GetTouch(0); // Инфа о самом первом касании (индекс отсчитывается от нуля)
var tpos = touch.position; // Экранные координаты
var wpos = Camera.main.ScreenToWorldPoint(tpos); // Мировые координаты (игровые)

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 12:58
morosit
Синтаксис:
Используется csharp
void OnMouseDown ()
        {
                Touch touch = Input.GetTouch(0);
                Vector3 mousePos = Camera.main.ScreenToWorldPoint (touch.position); //переменная "позиция мышки"
                if (mousePos.x > playerT.position.x) {
                        player.AddForce (Vector2.right * 15f);
                } else {
                        player.AddForce (Vector2.left * 15f);
                }
                player.AddForce (Vector2.up * 300f);
        }

Только в билде рывки и появляются, в редакторе юнити при использовании mouse.position всё работало, при использовании touch.position ошибка "ArgumentException: Index out of bounds."

В данный момент в сцене используется только один скрипт, с одной функцией

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 13:08
morosit
Рывки при движении и вверх и вниз, и влево и вправо.
Похоже будто несколько кадров теряются

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 13:09
1max1
Даже не знаю, попробуй создать чистый проект и воспроизвести эту ситуацию, возможно всё таки проблема с телефоном :-?

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 13:19
morosit
1max1 писал(а):Даже не знаю, попробуй создать чистый проект и воспроизвести эту ситуацию, возможно всё таки проблема с телефоном :-?

Когда проблема появилась первый раз пробывал на разных устройствах, вроде разницы не было.
Тоже прихожу к выводу что надо чистый проект создавать.

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 13:22
1max1
еще можно на емуляторе затестить https://www.bluestacks.com/ru/index.html

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 13:58
seaman
Этот эмулятор имхо намного лучше:
https://ru.bignox.com/

Re: Персонаж передвигается рывками

СообщениеДобавлено: 07 июл 2018, 17:51
morosit
Проблему я нашел.
Проблема оказалась в шэйдере. Цвет, для платформы, выбирал ядовито зеленый, такой чтобы эффект свечения получался. Сейчас вспомнил, что при выборе цвета юнити выдавало ошибку о несовместимости, но потом ошибка пропала.
Сбросил шэйдер, проверил - нормально, поставил опять зеленый(без ошибок) - рывков не наблюдаю.

P.S. Эмулятор есть в Андройд Студио.