Как заставить один объект "смотреть" за другим?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как заставить один объект "смотреть" за другим?

Сообщение XSiL 16 сен 2018, 19:13

Есть 2д игра с видом сверху, действия происходит в X и Y. Я создал врага, который минуя все преграды движется за игроком, однако я никак не могу найти способ заставить его смотреть в сторону игрока. Пробовал LookAt(), не помогло, враг поворачивается так, что его просто не видно. Можно ли изменить LookAt(), или есть какой нибудь другой способ?
P.s Вопрос глупый, ибо я новичок.
XSiL
UNец
 
Сообщения: 5
Зарегистрирован: 16 сен 2018, 19:00

Re: Как заставить один объект "смотреть" за другим?

Сообщение 1max1 16 сен 2018, 19:33

Синтаксис:
Используется csharp
public enum LookType
{
    Up,
    Down,
    Left,
    Right      
}

static class Extensions
{
    #region LookAt2D
    public static void LookAt2D(this Transform me, Vector3 target, Vector3 eye)
    {
        Vector3 look = target - me.position;

        float sAngle = Vector2.SignedAngle(eye, look);

        if (sAngle != 0.0f)
        {
            var eulerAngles = me.eulerAngles;

            eulerAngles.z += sAngle;

            me.eulerAngles = eulerAngles;
        }
    }

    public static void LookAt2D(this Transform me, Transform target, Vector3 eye)
    {
        me.LookAt2D(target.position, eye);
    }

    public static void LookAt2D(this Transform me, GameObject target, Vector3 eye)
    {
        me.LookAt2D(target.transform.position, eye);
    }

    public static void LookAt2D(this Transform me, Vector3 target, LookType lookType = LookType.Up)
    {
        Vector3 look = target - me.position;

        look.z = 0.0f;

        switch (lookType)
        {
            case LookType.Up:    me.up =     look; break;
            case LookType.Down:  me.up =    -look; break;
            case LookType.Left:  me.right = -look; break;
            case LookType.Right: me.right =  look; break;
        }
    }

    public static void LookAt2D(this Transform me, Transform target, LookType lookType = LookType.Up)
    {
        me.LookAt2D(target.position, lookType);
    }

    public static void LookAt2D(this Transform me, GameObject target, LookType lookType = LookType.Up)
    {
        me.LookAt2D(target.transform.position, lookType);
    }
    #endregion
}
 
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 28


cron