Как заставить объект двигаться со скоростью в точку, а из этой точки - с другой скоростью? - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь переместить объект со скоростью в точку и остановить его, когда он достигнет этой точки.

  void FixedUpdate()
    {
      if (transform.position.y == 0f) {
        rb.velocity = new Vector2(-speed, 0f);
      } //first change of the velocity

      if (transform.position.x == 0f){
        rb.velocity = new Vector2(0f, 0f);
      }
    }//here i want to stop
.........................................................

public void MoveR()
    {
      rb.velocity = new Vector2(-speed, upSpeed);
    }

1 Ответ

1 голос
/ 08 апреля 2019

Я не понимаю твоей логики там.Если вы хотите переместить объект в определенную позицию, как вы просили.Существует более упрощенный способ перемещения объекта в Unity.См. Документация Unity .

public class Example : MonoBehaviour
{
    public Vector3 myTarget;

    private void Start()
    {
        StartCoroutine(MoveTo());
    }

    private IEnumerator MoveTo()
    {
        while (transform.position != myTarget)
        {
            transform.position = Vector3.MoveTowards(transform.position, myTarget, Time.deltaTime * 2f);

            yield return null;
        }

    Debug.Log("We reached Target. Done!");
    yield return null;
    }
}

Если вы хотите, вы можете объявить myTarget как GameObject.В этом случае вам нужно будет создать пустой игровой объект или выбрать уже существующий.

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