Unity определение угла между 2мя векторами

134
20 июня 2019, 17:10

Я хочу узнать как вычислить угол между 2мя точками мыши: mousePos.x, mousePos.y Хотелось бы как узнать как это реализовать в 2 вариантах, полный угол 360 градусов и 180 градусов, в зависимости от того, в какую сторону повёрнут персонаж. Прикрепляю наскальную живопись для лучшего понимания и код.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Crosshair : MonoBehaviour {
public GameObject CrossHair;
public float Dir = 5f;
void Update () 
{
MoveCrossHair();
}
void MoveCrossHair(){
Vector3 point = new Vector3();
var mousePos = Input.mousePosition;
point = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x,  mousePos.y, Dir));
if (point.magnitude > 0.0f)
{
    CrossHair.transform.position = point;
}
}
}
Answer 1

Угол направления от персонажа на мышь (т.е. угол между направлением оси OX и вектором person->mouse) в градусах можно найти так:

 float angle = Mathf.Atan2(mousePos.y - person.y, mousePos.x - person.x) * Mathf.Rad2Deg;

Для отображения диапазона 360 градусов потребуется исправлять отрицательные углы, добавляя +360 (если в юнити эта функция, как в большинстве языков, возвращает диапазон -Pi..Pi)

READ ALSO
Dynamics 365, drag and drop

Dynamics 365, drag and drop

У меня на форме Dynamics 365 есть веб-ресурс HTML страница с зоной Drag and drop, как можно перетащенный файл загрузить в SharePoint?

131
EF code first. Настройка конфигурации отношений

EF code first. Настройка конфигурации отношений

К примеруЕсть класс Account и таблица Accounts

122
Ajax запросы с помощью jquery

Ajax запросы с помощью jquery

Изучаю ajax запросыНашёл на metanit пример в mvc проекте

164
Xamarin ListView Binding

Xamarin ListView Binding

Не работает привязка:

127