Vector3.MoveTowards, а также после курсора? - PullRequest
0 голосов
/ 28 апреля 2018

Я делаю персонажа, который следует моей позиции мыши.

У меня также есть враги, которые создаются, и я хотел бы, чтобы этот персонаж двигался в направлении местоположения врага, но был бы на несколько футов выше врага.

Поскольку мой персонаж - летающий враг, я не уверен, как использовать движение в единстве. Когда мои враги будут уничтожены, я бы хотел, чтобы персонаж продолжал следовать за курсором.

public class FollowCursor : MonoBehaviour 
{

    // Use this for initialization
    void Start ()
    {   
    }

    // Update is called once per frame
    void Update () 
    {
        if(GameObject.FindWithTag("Enemy"))
        {   
            transform.position = Vector3.MoveTowards.GameObject.FindWithTag("Enemy").transform.position;
        }
        else
        {   
            transform.position = Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x,Input.mousePosition.y,8.75f));
        }
    }
}                        

1 Ответ

0 голосов
/ 28 апреля 2018

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

Я также понимаю, что вы хотите использовать метод MoveTowards для этого.

Вы должны быть в состоянии сделать это, проигнорировав позицию Y или установив ее на фиксированное значение.

Вот так.

//Method used: Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta); 

//Set movespeed/steps
float speed = 5f;
float step = speed * Time.deltaTime;

//Define y position
float yourFixedYValue = 8.75f;

//Find target
Vector3 enemyPosition = GameObject.FindWithTag("Enemy").transform.position;
Vector3 target = new Vector3(enemyPosition.x, yourFixedYValue, enemyPosition.z);

//Move from current position towards target with step increment.
transform.position = Vector3.MoveTowards(transform.position, target, step);

Пожалуйста, опишите, что вы имеете в виду, если это не ответило на ваш вопрос.

EDIT:

Чтобы двигаться к мышке, вы можете использовать Raycast что-то вроде этого в вашем методе Update.

if (Input.GetMouseButtonDown(0)) 
{ //If left mouse clicked
    RaycastHit hit; 
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //Fire ray towards where mouse is clicked, from camera.
    if (Physics.Raycast(ray, out hit))  //If hit something
        target = hit.point; //point is a vector3 //hit.point becomes your target
}

Этим "чем-то" может быть любой коллайдер, в том числе вражеский. Так что может использоваться для перемещения в целом и для движения к врагам.

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