Перемещение объекта в пункт назначения плавно Unity3D - PullRequest
0 голосов
/ 21 марта 2019

Я весь день пытаюсь плавно переместить объект из точки A в точки B , поэтому я попытался Lerp , MoveTowards и SmoothDamp но каждый раз, когда объект просто исчезает из точки A и мгновенно появляется в точке B!

Я испробовал все решения, которые нашел в интернете, но получил тот же результат.

Не могли бы вы спасти мою жизнь и помочь мне решить это?

Вот коды, которые я пробовал:

    transform.position = Vector3.SmoothDamp(transform.localPosition, Destination, ref velocity, Speed);

transform.position = Vector3.Lerp(transform.localPosition, Destination, Speed);

transform.position = Vector3.MoveTowards(transform.localPosition, Destination, Speed);

И еще ...

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Попробуйте:

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

public class SmoothMove : MonoBehaviour 
{
    public float speed = 0.01f;
    private Vector3 destination;

    void Start()
    {
        destination = transform.position;
    }

    void Update()
    {
        transform.position = Vector3.Lerp(transform.position, destination, speed)
    }

    void SetDestination(Vector3 newPos)
    {
        destination = newPos;
    }
}

Надеюсь, это поможет вам.

2 голосов
/ 21 марта 2019

Вам необходимо постоянно обновлять позицию, используя Lerp.Вы можете сделать это, используя сопрограмму, как указано ниже (при условии, что отправитель и пункт назначения определены позициями):

public IEnumerator moveObject() {
    float totalMovementTime = 5f; //the amount of time you want the movement to take
    float currentMovementTime = 0f;//The amount of time that has passed
    while (Vector3.Distance(transform.localPosition, Destination) > 0) {
        currentMovementTime += Time.deltaTime;
        transform.localPosition = Vector3.Lerp(Origin, Destination, currentMovementTime / totalMovementTime);
        yield return null;
    }
}

Вы бы назвали эту сопрограмму с помощью:

StartCoroutine(moveObject());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...