Задать вопрос
@xanet0

Трясёт персонажа, что делать?

Трясёт персонажа когда перемещаю джойстик потихоньку, не знаю что делать использую FixedJoystick
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Rigidbody), typeof(BoxCollider))]
public class PlayerController : MonoBehaviour
{
    [SerializeField] private Rigidbody _rigidbody;
    [SerializeField] private FixedJoystick _joystick;
    [SerializeField] private Animator _animator;

    [SerializeField] private float _moveSpeed;

    private void FixedUpdate()
    {
        _rigidbody.velocity = new Vector3(_joystick.Horizontal * _moveSpeed, _rigidbody.velocity.y, _joystick.Vertical * _moveSpeed);

        if (_joystick.Horizontal != 0 || _joystick.Vertical != 0)
        {
            transform.rotation = Quaternion.LookRotation(_rigidbody.velocity);
            _animator.SetBool("isRunning", true);
        }
        else
            _animator.SetBool("isRunning", false);
    }
}
  • Вопрос задан
  • 224 просмотра
Подписаться 1 Средний 9 комментариев
Решения вопроса 1
@hermer29
Автор описал решение: "Всё починил, написал transform.rotation = Quaternion.LookRotation(new Vector3(_joystick.Horizontal* _moveSpeed, 0, _joystick.Vertical * _moveSpeed));", с которым я не согласен. velocity лучше не менять руками в таких ситуациях, достаточно использовать MovePosition. Есть такой вариант, что автор использовал в FixedUpdate прямую установку скорости, а Rigidbody прибавлял к скорости реакцию поверхности с силой трения сразу после этого. С MovePosition ты не игнорируешь работу модуля физики, а говоришь ему "Передвинь пожалуйста персонажа туда"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы