Vector3.MoveTowards () не работает, не можете это исправить?

#c# #unity3d

#c# #unity-игровой движок

Вопрос:

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

Я работаю над системой перемещения, которая перемещает игрока в точку щелчка, все в скрипте, кажется, работает, но на вкладке «игра» игрок вообще не перемещается. Я уже прочитал много информации о Vector3.MoveTowards() , но у меня ничего не получалось.

 Vector3 currentpos;
Vector3 targetpos;

bool ismoving = false;

public float speed = 10f;


void Update()
{
    currentpos = transform.position;
    move();

    if (Input.GetMouseButtonDown(0))
    {
        click();
    }

}


void click()                         //get the position of the click using a raycast//
{
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;

    if(Physics.Raycast(ray, out hit))
    {
        targetpos = hit.point;
        targetpos.y = 0f;            //only whants to move the player in the x and z axis//


        ismoving = true;
        move();
    }
}


void move()
{
    if (ismoving==true)
    {
        if (Vector3.Distance(currentpos,targetpos)>0.1f)  //if distance between current position and target position is greater than 0.1f player should move//
        {
            currentpos = Vector3.MoveTowards(currentpos, targetpos, speed * Time.deltaTime);

            Debug.Log("Current Position is:"   currentpos   " and target position is"   targetpos);
        }

        if(Vector3.Distance(currentpos,targetpos)<0.1f)
        {
            ismoving = false;
        }
    }
}
  

В консоли текущая позиция и целевая позиция верны, но игрок не перемещается.

Комментарии:

1. Пожалуйста, избегайте использования ссылок на текстовые изображения. Вместо этого скопируйте и вставьте текст непосредственно в свой ответ.

Ответ №1:

Ну, вы изменяете значение currentpos , но никогда не возвращаете его к transform.position , например, здесь

 currentpos = Vector3.MoveTowards(currentpos, targetpos, speed * Time.deltaTime);
transform.position = currentpos;
  

Комментарии:

1. Все просто, я просто знал, что это глупый вопрос, игрок движется, но он мерцает : (