Здравствуйте, делаю вертикальную аркаду под андроид. В различных руководствах пишут, что объекты с 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 - не самое верное решение, и из-за совсем небольшого опыта я не представляю, как переработать этот скрипт, чтобы сделать качественное управление. Подскажите, что можно сделать. Заранее спасибо.