Движение 3D шара с помощью свайпов

Программирование на Юнити.

Движение 3D шара с помощью свайпов

Сообщение xies 30 май 2021, 16:04

Я делаю управление 3D на андроид с помощью свайпов, всё работает шарик сам движется по оси z но проблема в оси x, мне нужно управление как в игре Rolling Sky под андроид, мой шарик поворачивает, но только при повторных многочисленных свайпах, мне нужна смена кординат сразу, как только произошёл свайп в ту или иную сторону, вот скрипты шара и панели для свайпов.
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ball : MonoBehaviour
{
    [SerializeField] private float _horizontalSpeed;
    [SerializeField] private float _verticalSpeed;

    private float _moveHorizontal;

    private Rigidbody _rigidbody;

    private void Start()
    {
        _rigidbody = GetComponent<Rigidbody>();
    }

    private void FixedUpdate()
    {
        Vector3 movement = new Vector3(_moveHorizontal, 0.0f, _verticalSpeed);

        _rigidbody.AddForce(movement * _horizontalSpeed);
    }

    public void Left()
    {
        _moveHorizontal = -1f;
    }

    public void Right()
    {
        _moveHorizontal = 1f;
    }
}


Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Panel : MonoBehaviour, IBeginDragHandler, IDragHandler
{
    private Ball _ball;

    private void Start()
    {
        _ball = GameObject.FindObjectOfType<Ball>();
    }

    public void OnBeginDrag(PointerEventData eventData)
    {
        if ((Mathf.Abs(eventData.delta.x)) > (Mathf.Abs(eventData.delta.y)))
        {
            if (eventData.delta.x > 0)
            {
                _ball.Right();
            }
            else
            {
                _ball.Left();
            }
        }
    }

    public void OnDrag(PointerEventData eventData)
    {
    }
}
xies
UNец
 
Сообщения: 9
Зарегистрирован: 07 апр 2021, 16:58

Re: Движение 3D шара с помощью свайпов

Сообщение Alkos26Rus 30 май 2021, 17:05

Синтаксис:
Используется csharp
    public void Left()
    {
        _moveHorizontal = -1f;
    }

    public void Right()
    {
        _moveHorizontal = 1f;
    }
 

У тебя идет назначение, поэтому как оно может зависить от многочисленных свайпов? Оно же плюсуется или минусуется. Тем более AddForce не мгновенно откликается, все таки инерция есть
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Движение 3D шара с помощью свайпов

Сообщение xies 30 май 2021, 17:24

Он после изменения на velocity вообще странно поворачивает, он должен поворачивать взависимости от того в какой точке сейчас палец. Посередение и шар посередение чуть правее и шар чуть смешается, но он просто от свайпов права криво косит на право, а лево на лево.
xies
UNец
 
Сообщения: 9
Зарегистрирован: 07 апр 2021, 16:58

Re: Движение 3D шара с помощью свайпов

Сообщение Alkos26Rus 30 май 2021, 18:02

xies писал(а):Он после изменения на velocity вообще странно поворачивает, он должен поворачивать взависимости от того в какой точке сейчас палец. Посередение и шар посередение чуть правее и шар чуть смешается, но он просто от свайпов права криво косит на право, а лево на лево.

Ну нет в коде ни какой зависимости от позиции пальца, только право или лево в зависимости от дельты
Синтаксис:
Используется csharp
    public void Left()
    {
        _moveHorizontal = -1f;
    }

    public void Right()
    {
        _moveHorizontal = 1f;
    }
 


Если тебе нужна позиция пальца используй Touch.position и переводи в мировые координаты
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва


Вернуться в Скрипты

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

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