Я работаю над маленькой игрой. До сих пор мне удается переместить блок в направлении X или Y. Прямо сейчас я просто привязываю блок к сетке. Я хочу, чтобы он плавно следовал за мышью, а когда я отпускаю, объект должен привязываться к соседней сетке. Я не бог с расчетом экрана и мировой позиции. Надеюсь, какой-то опытный человек направляет меня. Это Quard, а не элемент пользовательского интерфейса.
Это обновление внутри
if (dragging) { //if dragging shoot raycast
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),
out hit, Mathf.Infinity, blockLayer)) {
Debug.Log("isnide dragging");
//Parent GameObject
//initialize empty obj and make it parent
tempParentObj = ParentGameObjectWithNewObject();
//calculation for movement
if (previousPart != null) {
Vector3 previousPos = hit.point;
Vector3 worldPos = hit.point;
worldPos.z = adjustedHeight;
worldPos.x = Mathf.Round(hit.point.x);
worldPos.y = Mathf.Round(hit.point.y);
//Code to restrict block to change its X and y pos at the same time.
if (worldPos.y != previousPart.transform.position.y && worldPos.x != previousPart.transform.position.x) {
Debug.Log("returning");
return;
}
//parent object of block move
tempParentObj.transform.position = worldPos;
}
}
Прогресс до сих пор
![enter image description here](https://i.stack.imgur.com/gNYvx.gif)
Чего я хочу достичь
![enter image description here](https://i.stack.imgur.com/VtSMJ.gif)
Спасибо, что прочитали это. Любая ссылка будет полезна.
Спасибо.