Пятница, 29 Ноября 2024, 13:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Перемещение игрока
ScoobyDudeДата: Пятница, 27 Марта 2020, 11:58 | Сообщение # 1
уже был
Сейчас нет на сайте
Здравствуйте, делаю вертикальную аркаду под андроид. В различных руководствах пишут, что объекты с Rigidbody нужно двигать с помощью физики, иначе производительность будет теряться на постоянный пересчёт физики.
Я написал небольшой скрипт, который определяет нажатие на игрока и заставляет его двигаться за пальцем по сцене.
Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class PlayerController : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    private bool IsTouch = false;
    private int TouchID;
    private Rigidbody Rb;
    public float Speed = 100f;

    private void Start ()
    {
        Rb = GetComponent<Rigidbody>();
    }
    private void FixedUpdate ()
    {
        if(IsTouch == true)
        {
            Vector3 MovePos = Camera.main.ScreenToWorldPoint(Input.GetTouch(TouchID).position);
            Rb.MovePosition(Vector3.Lerp(Rb.position, new Vector3(MovePos.x, 0.0f, MovePos.z), Speed));
        }
    }
    public void OnPointerDown(PointerEventData eventData)
    {
        IsTouch = true;
        TouchID = eventData.pointerId;
    }
    public void OnPointerUp(PointerEventData eventData)
    {
        IsTouch = false;
    }
}

Однако я прочитал, что двигать объекты через MovePosition - не самое верное решение, и из-за совсем небольшого опыта я не представляю, как переработать этот скрипт, чтобы сделать качественное управление. Подскажите, что можно сделать. Заранее спасибо.


Сообщение отредактировал ScoobyDude - Пятница, 27 Марта 2020, 13:15
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг