Как плавно перемещать объект GameObject при перетаскивании мышью только в одном направлении и при отпускании мыши с привязкой к сетке (Unity) - PullRequest
0 голосов
/ 27 июня 2019

Я работаю над маленькой игрой. До сих пор мне удается переместить блок в направлении 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

Чего я хочу достичь

enter image description here

Спасибо, что прочитали это. Любая ссылка будет полезна. Спасибо.

...