Я пытаюсь создать привязку к функции, которая также учитывает поворот твердого тела и изменение положения.Мне нужно, чтобы привязать блок к закругленной точке относительно мыши.В данный момент я округляю положение мыши до целого числа, и у меня есть положение главных объектов в учетной записи, но когда главный объект вращается, подчиненный объект, который я привязываю, будет менять позиции, чем дальше находится мышь.
Я изучил API-интерфейсы сетки Unity и API-интерфейсы gridlayout, но я не уверен, подходит ли это.Я думаю, что это вопрос математики или что-то, возможно, более сложное.
public void SnapToGrid()
{
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 masterObjectPos = new Vector2(dataManagement.masterObject.transform.position.x, dataManagement.masterObject.transform.position.y);
Vector2 mouseToMasterObjectPos = masterObjectPos - mousePosition;
float mouseMasterObjectDistance = Vector2.Distance(masterObjectPos, mousePosition);
Vector2 camPos = new Vector2(Camera.main.transform.position.x, Camera.main.transform.position.y);
mousePosition -= masterObjectPos;
Debug.LogWarning("MOUSEPtomasterpos: " + mouseToMasterObjectPos);
Debug.LogWarning("mouseobject distance " + mouseMasterObjectDistance);
int xCount = Mathf.RoundToInt(mousePosition.x / gridSizeX);
int yCount = Mathf.RoundToInt(mousePosition.y / gridSizeY);
Vector2 result = new Vector2((float)xCount * gridSizeX, (float)yCount * gridSizeY);
result += masterObjectPos;
result += mouseToMasterObjectPos;
template.transform.position = result;
}
Я пытался включить положение мыши за вычетом положения главного объекта, что бы заморозить блок на месте, но этоне работаетЯ хочу, чтобы блок оставался привязанным, но учитывал изменения положения и поворота.Что происходит, когда объект вращается, блок начинает двигаться (что-то связанное с позицией главного объекта).