Преследование персонажа по оси Х
В платформере пила преследует персонажа, все хорошо, но получается, что когда персонаж прыгает, то пила следует за ним. Как сделать движение пилы только по оси Х?
void Start()
{
target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
}
Ответы (1 шт):
Если вы хотите изменять движение только по оси X, то вам не нужно изменять его положение по оси Y. То есть вот эту строчку:
transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
нужно заменить на что-то подобное:
transform.position = new Vector2(Vector2.MoveTowards(transform.position, targetPosition, Time.deltaTime).x, [пила].transform.position.y);
То есть сначала с помощью функции вы сдвигаете пилу к персонажу (причем и по х и по y), потом с помощью .x берете смещение только по х, после чего в качестве координаты y подставляете координату сомой пилы по y, то есть то же, что и было до сдвига.
Другой вариант - это заменять y на на необходимый (то есть на y самой пилы) прямо в функции MoveTowards, тогда эта строка будет выглядеть так:
transform.position = Vector2.MoveTowards(transform.position, new Vector2(target.position.x, [пила].transform.position.y), speed * Time.deltaTime);
Третий вариант - это сделать переменную targetPosition, которая будет равна:
targetPosition = new Vector2(target.position.x, [пила].transform.position.y)
Остается только заменить точку назначения (второй параметр) в функции MoveTowards на переменную targetPosition.
Надеюсь помог! Если есть вопросы, задавайте!