using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Aspisok : MonoBehaviour
{
//члены отряда, меняя их местами, меняется позиция в отряде
public GameObject c1pOb; // это центральный мембер, с координатами (0,0,0)
public GameObject a1pOb;
public GameObject e1pOb;
public GameObject d2pOb;
public GameObject c3pOb;
public Vector3 castVcentr = new Vector3(); //точка рейкаста, получаем из другого скрипта
public bool vykl = false;
public class yacheyka // создаю ячейки
{
public Vector3 izCentraVtochky; // координаты, от центрального
public float distance; // расстояние, от центрального, посчитанные в другом скрипте
public yacheyka(Vector3 izCentraVtochky, float distance)
{
this.izCentraVtochky = izCentraVtochky;
this.distance = distance;
}
}
yacheyka a1 = new yacheyka(new Vector3(-80.0f, 0.0f, 0.0f), 80f);
yacheyka e1 = new yacheyka(new Vector3(80.0f, 0.0f, 0.0f), 80f);
yacheyka d2 = new yacheyka(new Vector3(40.0f, 0.0f, -40.0f), 56.56854f);
yacheyka c3 = new yacheyka(new Vector3(0.0f, 0.0f, -80.0f), 80f);
void Update()
{
if (vykl == true)
{
Vector3 relativePos = castVcentr - c1pOb.transform.position; //Вектор в точку рейкаста
var d = Quaternion.LookRotation(relativePos); //Угол поворота в сторону рейкаста
var f = -d.eulerAngles + c1pOb.transform.rotation.eulerAngles; //пытаюсь вычислить, но ничего не получается
var cosf = Mathf.Cos(f.y);// пытался прописывать в ручную, 90, 45,0 и т.д. закономерности не нашёл
var sinf = Mathf.Sin(f.y);// вертятся как попало. в 0 градусах выстроились прямо но с инверсией
// cos = Mathf.Cos(d.eulerAngles.y);
// float sin = Mathf.Sin(d.eulerAngles.y);
c1pOb.GetComponent<memberSquad1>().yach = new Vector3(0f, 0f, 0f);
float tochkaXcella1 = a1.izCentraVtochky.x * cosf - a1.izCentraVtochky.z * sinf;
float tochkaZcella1 = a1.izCentraVtochky.x * sinf + a1.izCentraVtochky.z * cosf;
Vector3 promtochkaa1 = new Vector3(tochkaXcella1, 0f, tochkaZcella1);
var a1p = castVcentr - promtochkaa1;
a1pOb.GetComponent<memberSquad1>().yach = a1p;
float tochkaXcelle1 = e1.izCentraVtochky.x * cosf - e1.izCentraVtochky.z * sinf;
float tochkaZcelle1 = e1.izCentraVtochky.x * sinf + e1.izCentraVtochky.z * cosf;
Vector3 promtochkae1 = new Vector3(tochkaXcelle1, 0f, tochkaZcelle1);
//Vector3 e1p = castVcentr + e1.izCentraVtochky; не знаю как правильно
Vector3 e1p = castVcentr - promtochkae1;
e1pOb.GetComponent<memberSquad1>().yach = e1p;
float tochkaXcelld2 = d2.izCentraVtochky.x * cosf - d2.izCentraVtochky.z * sinf;
float tochkaZcelld2 = d2.izCentraVtochky.x * sinf + d2.izCentraVtochky.z * cosf;
Vector3 promtochkad2 = new Vector3(tochkaXcelld2, 0f, tochkaZcelld2);
// Vector3 d2p = castVcentr + d2.izCentraVtochky;
Vector3 d2p = castVcentr - promtochkad2;
d2pOb.GetComponent<memberSquad1>().yach = d2p;
float tochkaXcellc3 = c3.izCentraVtochky.x * cosf - c3.izCentraVtochky.z * sinf;
float tochkaZcellc3 = c3.izCentraVtochky.x * sinf + c3.izCentraVtochky.z * cosf;
Vector3 promtochkac3 = new Vector3(tochkaXcellc3, 0f, tochkaZcellc3);
// Vector3 e1p = castVcentr + e1.izCentraVtochky;
Vector3 c3p = castVcentr - promtochkac3;
c3pOb.GetComponent<memberSquad1>().yach = c3p;
vykl = false;
}
}
}