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

Как сделать поворот персонажа с помощью Joystick Unity 3D?

Есть скрипт на перемещение игрока с помощью джойстика Fixed Joystick.
Игра на Unity 3D
(https://assetstore.unity.com/packages/tools/input-...)
1. Как задать постоянное движение игроку?
2. Как поворачивать персонажа с помощью джойстика?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Rigidbody), typeof (BoxCollider))]
public class PlayerController : MonoBehaviour
{
    [SerializeField] public float runSpeed;
    [SerializeField] private Rigidbody _rigidbody;
    [SerializeField] private FixedJoystick _joystick;
    [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);
        }
        _rigidbody.AddForce(0,0,runSpeed*Time.deltaTime);
    }
}
  • Вопрос задан
  • 1047 просмотров
Подписаться Средний 4 комментария
Решения вопроса 1
1. Вместо AddForce просто выставлять скорость движения (через RigidBody.velocity) - вот тебе и постоянное движение с постоянной скоростью
2. Джойстик возвращает значение двух своих осей от -1 до 1 - по ним при помощи школьных формул можно высчитать угол поворота (гугл: как преобразовать декартовы координаты в полярные).

Но в теории ты можешь просто нормализовать этот вектор, скалярно умножить на скорость, и передавать сразу в velocity и в LookAt, без лишних вычислений

Но как я смотрю - ты это примерно и делаешь, просто AddForce лишний, кмк.
Либо наоборот - лишний velocity, ибо документация Unity рекомендует использовать только одно.

А ещё я не вижу, где выставляется значение _moveSpeed (и чем это отличается от runSpeed).
Если нигде, то оно будет всегда 0, и персонаж двигаться не будет.

В общем внимательно читай документацию и свой собственный код, и пытайся понять, как его должен воспринимать движок.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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