motkot
@motkot
Программирование C#.

Как сделать «плавное» перемещение обьекта?

Сейчас игрок может перемещать обьект, но это не достаточно плавно. Как сделать плавнее?

Код
using UnityEngine;

public class Grabbing : MonoBehaviour
{
    [SerializeField] float maxDistance;
    [SerializeField] float GrapPower;
    [Space] 
    [SerializeField] Transform Offset;

    Transform GrabObj;
    RaycastHit hit;
    bool grab;

    private void FixedUpdate()
    {
        if (Input.GetKeyDown(KeyCode.Mouse0) || grab)
        {
            Grab();
        }
        if (Input.GetKeyDown(KeyCode.E) && grab)
        {
            Put();
        }
    }

    private void Grab()
    {
        var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        Physics.Raycast(ray, out hit, maxDistance);
        if(grab)
        {
            GrabObj.position = Offset.position;
        }
        else if(hit.rigidbody)
        {
            grab = true;
            hit.rigidbody.useGravity = false;
            Offset.position = hit.transform.position;
            GrabObj = hit.transform;
        }
    }


    private void Put()
    {
        GrabObj.GetComponent<Rigidbody>().useGravity = true;
        grab = false;
    }
}


Видео
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Если собираетесь перемещать RigidBody не по физике, то надо не гравитацию выключать, а kinematic активировать.
Ответ написан
Ваш ответ на вопрос

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

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