Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотров
    28 237

Куда смотрят глаза


MasterGH

756 просмотров

Был вопрос на форуме о том, как узнать, а куда смотрит игрок и как нарисовать линию в экранных координатах.

Я не нарисую отрезки в окне игры в экранных координатах, но могу отобразить точки одного отрезка для одного глаза 2д-панельками в экранных координатах (хотя визуально, у Unity экранные координаты связаны с 3д координатами по масштабу пикселя на метр на сцене). Для наглядности все же в окнах сцены будут отрезки в 3д-координатах.

 

Построить луч.png

 

 

Скрытый текст

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

// Вешаеться срипт на каждый глаз
public class DrawForwardPath : MonoBehaviour 
{
    public float distance = 1f;
    public RectTransform _2dPoint1;
    public RectTransform _2dPoint2;

    void Update()
    {
        //Начальаня точка ("глаз")
        Vector3 position1 = transform.position;

        // transform.rotation возвращает кватернион
        // Vector3.forward возвращает Vector3(0f,0f,1f)

        // Конечная позиция = позиция глаза + Нормализация направления(кватернион глаза * ось "вперед") * дистанция
        Vector3 position2 = position1 + (transform.rotation * Vector3.forward).normalized * distance;
        // Белая линия, работает в сцене, но не на экране
        Debug.DrawLine(position1, position2);

        //Как пример, две 2д-панельки в виде окружностей показывают точки на экране начала и конца отрезка
        _2dPoint1.position = Camera.main.WorldToScreenPoint(position1);
        _2dPoint2.position = Camera.main.WorldToScreenPoint(position2);
    }
}

 

 

Чтобы посмотреть функции операторов такие как умножение, сложение и свойства normalized, и переписать код на C++ можно декомплировать .net библиотеку C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll через ILSpay. Например, там есть расчеты умножения кватерниона (X,Y,Z,W) на эйлеровы углы (X,Y,Z), нормализация, сложение. Библиотеку это можно взять из Unity игр или установив движок Unity.

 

Адреса позиции и углов обычно находятся рядом друг с другом.

0 Комментариев


Рекомендуемые комментарии

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

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.