- Home /
 
Problem in adaptation code vector3 for vector2
I found a web script to create gizmo at runtime. The script is for 3d, vector3, but I adapted it for my project which is in 2d. As it shows in the console of the Unity, there is no error, but when I play play simply looks like in the image, I can not move the gizmo, simply nothing happens! Previously it worked in 3d, but when I adapted it to 2d it does not work, it just stands still. What can I do to make it work?

GizmoTranslateScript:
 using UnityEngine;
 using System.Collections;
 
 
 public class GizmoTranslateScript : MonoBehaviour {
 
     public GameObject xAxisObject;
     public GameObject yAxisObject;
     public GameObject translateTarget;
     private GizmoClickDetection[] detectors;
     public void Awake() {
 
         detectors = new GizmoClickDetection[3];
         detectors[0] = xAxisObject.GetComponent<GizmoClickDetection>();
         detectors[1] = yAxisObject.GetComponent<GizmoClickDetection>();
 
         transform.position = translateTarget.transform.position;
     }
 
     public void Update() {
         for (int i = 0; i < 2; i++) {
             if (Input.GetMouseButton(0) && detectors[i].pressing) {
 
                 float distance = Vector2.Distance(Camera.main.transform.position, translateTarget.transform.position);
                 distance = distance * 2.0f;
 
                 Vector2 offset = Vector2.zero;
 
                 switch (i) {
                     case 0:
                         {
                           
                             if (detectors[i].pressingPlane) {
                                 float deltaY = Input.GetAxis("Mouse Y") * (Time.deltaTime * distance);
                                 offset = Vector2.up * deltaY;
                                 offset = new Vector2(0.0f, offset.y);
                                 translateTarget.transform.Translate(offset);
 
                                 
 
                             } else {
                                 float delta = Input.GetAxis("Mouse X") * (Time.deltaTime * distance);
                                 offset = Vector2.left * delta;
                                 offset = new Vector2(offset.x, 0.0f);
                                 translateTarget.transform.Translate(offset);
                             }
                         }
                         break;
 
                     case 1:
                         {
                             if (detectors[i].pressingPlane) {
                                 float deltaX = Input.GetAxis("Mouse X") * (Time.deltaTime * distance);
                                 offset = Vector2.left * deltaX;
                                 offset = new Vector2(offset.x, 0.0f);
                                 translateTarget.transform.Translate(offset);
 
                                
 
                             } else {
                                 float delta = Input.GetAxis("Mouse Y") * (Time.deltaTime * distance);
                                 offset = Vector2.up * delta;
                                 offset = new Vector2(0.0f, offset.y);
                                 translateTarget.transform.Translate(offset);
                             }
                         }
                         break;
                     case 2:
                         {
                             
                             if (detectors[i].pressingPlane) {
                                 float deltaX = Input.GetAxis("Mouse X") * (Time.deltaTime * distance);
                                 offset = Vector2.left * deltaX;
                                 offset = new Vector2(offset.x, 0.0f);
                                 translateTarget.transform.Translate(offset);
 
                                 float deltaY = Input.GetAxis("Mouse Y") * (Time.deltaTime * distance);
                                 offset = Vector2.up * deltaY;
                                 offset = new Vector2(0.0f, offset.y);
                                 translateTarget.transform.Translate(offset);
 
                             } 
                         }
                         break;
                 }
 
                 transform.position = translateTarget.transform.position;
 
                 break;
             }
         }
     }
 
 }
 
 
               GizmoClickDetection:
 using UnityEngine;
 using System.Collections;
 using System;
 using System.Collections.Generic;
 
 public class GizmoClickDetection : MonoBehaviour {
 
     public static bool ALREADY_CLICKED;
 
     public Camera gizmoCamera;
     public LayerMask gizmoLayer;
     public GameObject[] targets;
     public Material highlight;
     public Dictionary<MeshRenderer, Material> previousMaterials;
 
     [HideInInspector]
     public bool pressing = false;
 
     [HideInInspector]
     public bool pressingPlane = false;
 
     public void Awake() {
 
         previousMaterials = new Dictionary<MeshRenderer, Material>();
     }
 
     public void Update () {
 
       
         if (!ALREADY_CLICKED && Input.GetMouseButtonDown(0)) {         
 
             
             Ray ray = gizmoCamera.ScreenPointToRay(Input.mousePosition);
             RaycastHit[] hits = Physics.RaycastAll(ray, gizmoLayer);
             bool detected = false;
             pressingPlane = false;
 
             foreach (RaycastHit hit in hits) {
                 if (Array.IndexOf(targets, hit.collider.gameObject) >= 0) {
                     if (!hit.collider.gameObject.GetComponent<Renderer>().enabled) continue;
                     if (hit.collider.gameObject.name.Contains("_plane_")) pressingPlane = true;
                     detected = true;
                     pressing = true;
                 }
             }
 
             if(detected) {
               
                 if(previousMaterials != null) previousMaterials.Clear();
 
                 foreach (GameObject target in targets) {
 
                     try {
                         foreach (MeshRenderer renderer in target.GetComponentsInChildren<MeshRenderer>(false)) {
                             previousMaterials[renderer] = renderer.sharedMaterial;
                             renderer.material = highlight;
                         }
                     } catch (NullReferenceException exception) {
         
                     }
 
                 }
 
                 ALREADY_CLICKED = true;
             }
 
 
         } else if(Input.GetMouseButtonUp(0) && previousMaterials.Count > 0) {
      
              
             foreach (MeshRenderer renderer in previousMaterials.Keys) {
                 renderer.material = previousMaterials[renderer];
             }
             previousMaterials.Clear();
             pressing = false;
             pressingPlane = false;
             ALREADY_CLICKED = false;
         }
     }
 
 }
 
 
               
                 
                testegizmo.png 
                (121.3 kB) 
               
 
              
               Comment
              
 
               
              Your answer