Физика срабатывает а координаты меняются что делать?

Общие вопросы о Unity3D

Физика срабатывает а координаты меняются что делать?

Сообщение Ivan1983 26 май 2016, 14:38

Есть объект Player у него есть коллайдер с физикой. Когда игрок врезается в стену то останавливается но при этом его transform.position продолжает меняться.
Движение сделано так:
Синтаксис:
Используется csharp
           
if (Input.GetKey(KeyCode.W))
            {
            player.transform.Translate(new Vector3(0, speed * Time.deltaTime, 0));
}
 

я понимаю что вектор есть вектор и ему пофиг на физику. Пробовал делать условие мол если столкнулся то Нельзя двигаться но тогда он вообще перестает двигаться и как бы прилипает к стене навсегда. Соответствено выход из коллизий не срабатывать.

Как быть?
Ivan1983
UNец
 
Сообщения: 40
Зарегистрирован: 07 мар 2014, 09:28

Re: Физика срабатывает а координаты меняются что делать?

Сообщение A-Train 26 май 2016, 14:42

А чем вам не угодил стандартный character controller?
A-Train
UNIт
 
Сообщения: 102
Зарегистрирован: 09 сен 2015, 15:44

Re: Физика срабатывает а координаты меняются что делать?

Сообщение Ivan1983 26 май 2016, 14:44

A-Train писал(а):А чем вам не угодил стандартный character controller?

Игра 2д вид сверху. Вроде как в стандартном нет этого или я ошибаюсь?
Ivan1983
UNец
 
Сообщения: 40
Зарегистрирован: 07 мар 2014, 09:28

Re: Физика срабатывает а координаты меняются что делать?

Сообщение A-Train 26 май 2016, 14:47

Тогда двигайте через Rigidbody2d.AddForce
A-Train
UNIт
 
Сообщения: 102
Зарегистрирован: 09 сен 2015, 15:44

Re: Физика срабатывает а координаты меняются что делать?

Сообщение Ivan1983 26 май 2016, 15:20

A-Train писал(а):Тогда двигайте через Rigidbody2d.AddForce

Моя ошибка дал не достаточно информации.
Персонаж двигается клавиатурой WASD поворачивается он за мышкой но, при этом направление движения по клавишам не меняется то есть если нажать W и лицо его вверх монитора смотрит он идет в верх если лицо вниз он все равно идет вверх но уже спиной. Если я использую Rigidbody2d.AddForce он начинает двигаться как черт знает кто.
Иерархия объекта
Player -просто пустой gameobject
внутри него тело персонажа со скриптом, спрайтом и коллайдером.
Ivan1983
UNец
 
Сообщения: 40
Зарегистрирован: 07 мар 2014, 09:28

Re: Физика срабатывает а координаты меняются что делать?

Сообщение Левш@ 26 май 2016, 16:00

A-Train писал(а):А чем вам не угодил стандартный character controller?

Ivan1983 писал(а):Игра 2д вид сверху. Вроде как в стандартном нет этого или я ошибаюсь?

Какое отношение имеет контроллер движения к типу камеры ? (popcorn1)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Физика срабатывает а координаты меняются что делать?

Сообщение Ivan1983 26 май 2016, 16:14

Левш@ писал(а):
A-Train писал(а):А чем вам не угодил стандартный character controller?

Ivan1983 писал(а):Игра 2д вид сверху. Вроде как в стандартном нет этого или я ошибаюсь?

Какое отношение имеет контроллер движения к типу камеры ? (popcorn1)

Я выше написал как должен двигаться мой персонаж. Это есть в стандартном контроллере? Я как бы не шарю в юнити с флеша пытаюсь перелезть пока все очень сложно дается...
Ivan1983
UNец
 
Сообщения: 40
Зарегистрирован: 07 мар 2014, 09:28

Re: Физика срабатывает а координаты меняются что делать?

Сообщение A-Train 27 май 2016, 11:29

Вы ведь наверняка хотите делать игры более замысловатой кинематикой по сравнению с сокобаном? В этом случае вам все равно придется изучить и использовать класс Rigidbody2D, и никуда от этого не спрятаться не скрыться. А ответ на ваш вопрос там сокрыт, больше негде.
A-Train
UNIт
 
Сообщения: 102
Зарегистрирован: 09 сен 2015, 15:44

Re: Физика срабатывает а координаты меняются что делать?

Сообщение Ivan1983 31 май 2016, 12:48

A-Train писал(а):Вы ведь наверняка хотите делать игры более замысловатой кинематикой по сравнению с сокобаном? В этом случае вам все равно придется изучить и использовать класс Rigidbody2D, и никуда от этого не спрятаться не скрыться. А ответ на ваш вопрос там сокрыт, больше негде.

Уже разобрался. Спасибо за все.

P>S> кому интересно сделал так:
Синтаксис:
Используется csharp
      void FixedUpdate ()
        {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");
        Vector2 movement = new Vector2(moveHorizontal, moveVertical);

        rigidbody.velocity = movement * speed;
}
 
Ivan1983
UNец
 
Сообщения: 40
Зарегистрирован: 07 мар 2014, 09:28


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10