@yraiv

Почему исчезает объект во время поворота?

Делаю код для игры, необходимо, чтоб персонаж мог двигаться из точки в точку и поворачиваться в сторону направления движения. Движение работает, но когда я пытаюсь повернуть свой 2d объект, то он не поворачивается, а просто исчезает. Я понимаю, что этол из-за того, что кроме z ещё и x и y становятся на 90 граудсов и мой 2д объект ребром как бы встаёт и поэтому его не видно, но как сделать так, чтоб оно нормально было

Скрипт

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

public class ZombieStandart : MonoBehaviour
{

    public float speed = 1f;
    public int health;
    public int atack;
    public Transform[] WayPoints;
    public int NewPosition;
    public Transform LastPosition;


    public void Start()
    {
        NewPosition = 0;
    }


    public void FixedUpdate()
    {
        Move();
        Rotation();
    }


    public void Move()
    {
        transform.position = Vector2.MoveTowards(transform.position, WayPoints[NewPosition].position, speed * Time.deltaTime);

        if (Vector2.Distance(transform.position, WayPoints[NewPosition].position) < 0.2f)
        {
            NewPosition = NewPosition + 1;

        }
    }

    public void Rotation() // вот тут пытаюсь повернуть но что-то не хочет
  
    {
        Vector2 dir = WayPoints[NewPosition].position - transform.position;
        Quaternion rotation = Quaternion.LookRotation(dir, Vector2.zero);
        transform.rotation = rotation;
        transform.Translate(dir.normalized * speed * Time.deltaTime, Space.World);

    }
}
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 2
Если вам нужно тупо повернуть персонажа в противоположную сторону от движения, не проще в компоненте Sprite Renderer менять bool переменную Flip? Или можно сделать так:
void Flip()
{
    if (Input.GetAxis("Horizontal") < 0) transform.localRotation = Quaternion.Euler(0, 0, 0);
    if (Input.GetAxis("Horizontal") > 0) transform.localRotation = Quaternion.Euler(0, 180, 0);
}
Ответ написан
Комментировать
@NIKROTOS
Начинающий программист.
Можно сделать объект ребёнком камеры, тогда будет работать, так, как хочешь.
Кстати, камера видит объекты на расстоянии от и до, то-бишь объект может быть слишком близко.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы