Enable disable Rigidbody 2D when touch phase starts?
Hello im a doing a puzzle game 2d that uses the box collider 2d to match the pieces, i have many pieces of irregular shapes and i want them to fall off with gravity , touch them and drag them to their spot , for that purpose i added a rigid body and it works perfectly for the falll , but i need it to be kinematic so i can drag it. i think i can enable and disable on will power, but there is stiill a problem that the piece of the puzzle doesnt attach to its place , so it kepps failing here is my code
     using System.Collections;
     using System.Collections.Generic;
     using UnityEngine;
     
     public class El_carmen : MonoBehaviour
     {
 
     [SerializeField]
     private Transform El_carmenPlace;
     private Vector2 initialPosition;
     private float deltaX, deltaY;
     public static bool locked;
     //use this for initialiozation
     void Start()
     {
         
     }
 
     private void Update()
     {
         if (Input.touchCount > 0 && !locked)
         {
             Touch touch = Input.GetTouch(0);
      
             Vector2 touchPos = Camera.main.ScreenToWorldPoint(touch.position);
            
             
             switch (touch.phase)
             {
                 case TouchPhase.Began:
                     
                     if (GetComponent<Collider2D>() == Physics2D.OverlapPoint(touchPos))
                     {
                         deltaX = touchPos.x - transform.position.x;
                         deltaY = touchPos.y - transform.position.y;
                     }
 
                     break;
                 case TouchPhase.Moved:
                     
                     if (GetComponent<Collider2D>() == Physics2D.OverlapPoint(touchPos))
                         transform.position = new Vector2(touchPos.x - deltaX, touchPos.y - deltaY);
                     break;
                 case TouchPhase.Ended:
                     initialPosition = transform.position;
                     if (Mathf.Abs(transform.position.x - El_carmenPlace.position.x) <= 0.5f &&
                         Mathf.Abs(transform.position.y - El_carmenPlace.position.y) <= 0.5f)
                     {
                         
                         transform.position = new Vector2(El_carmenPlace.position.x, El_carmenPlace.position.y);
                         locked = true;
                     }
                     else
                     {
                         transform.position = new Vector2(initialPosition.x, initialPosition.y);
 
                        
                     }
 
                     break;
             }
 
         }
     }
 
 }
Your answer
 
 
             Follow this Question
Related Questions
How do I make a rigid body move towards position of touch 0 Answers
iOS moving up and down question ( code problem ) 0 Answers
Can someone explain how this collision detection work and why it fails sometimes? 0 Answers
Unable to stop animation upon collision (2d, animation, rigidbody) 0 Answers
How to separate a Tap from a Swipe? 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                