- Home /
Scale ingame color picker
Hey, I am working on a 3D room editor where you can grab an object from a menu and put it back in a room. You also get the option to give these objects a different color, this is done by the color picker. I now have a script that works the way I want it only if I enlarge the color picker, then he does not pick up the colors anymore and he does not move the selector circle anymore.
How do I solve this?
GIF Color picker at 1.8 scale 
GIF Color picker at above 2 scale 
Color picker script:
 using UnityEngine;
 
 public class ColorPickerSimple : MonoBehaviour
 {
 
     Color[] Data;
     SpriteRenderer SpriteRenderer;
 
     GameObject ColorPicker;
     GameObject Selector;
     BoxCollider Collider;
     public GameObject target;
     Ray rayray;
     private Plane MyPlane;
 
     public int Width { get { return SpriteRenderer.sprite.texture.width; } }
     public int Height { get { return SpriteRenderer.sprite.texture.height; } }
 
     public Color Color;
 
     void Awake()
     {
 
         ColorPicker = transform.Find("ColorPicker").gameObject;
         SpriteRenderer = ColorPicker.GetComponent<SpriteRenderer>();
         Selector = transform.Find("Selector").gameObject;
         Collider = ColorPicker.GetComponent<BoxCollider>();
 
         Data = SpriteRenderer.sprite.texture.GetPixels();
 
         Color = Color.white;
 
         Debug.Log(Collider);
         MyPlane = new Plane(transform.TransformDirection(Vector3.forward), transform.position);
     }
 
 
     void Update()
     {
 
         if (Input.GetMouseButton(0))
         {
             rayray = Camera.main.ScreenPointToRay(Input.mousePosition);
             MyPlane = new Plane(transform.TransformDirection(Vector3.forward), transform.position);
 
             Vector3 screenPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
             screenPos = new Vector3(screenPos.x, screenPos.y);
 
 
             //check if we clicked this picker control
             RaycastHit[] ray = Physics.RaycastAll(rayray.origin, rayray.direction);
             foreach (RaycastHit h in ray)
             {
                 Debug.Log(h.collider.name);
                 if (h.collider.name == "ColorPicker")
                 {
                     Selector.transform.position = screenPos;
 
                     //get color data
                     screenPos -= ColorPicker.transform.position;
                     int x = (int)(screenPos.x * Width);
                     int y = (int)(screenPos.y * Height) + Height;
 
                     if (x > 0 && x < Width && y > 0 && y < Height)
                     {
                         Color = Data[y * Width + x];
                         target.GetComponent<Renderer>().material.color = Color;
                         Debug.Log(Width);
                         Debug.Log(Height);
                     }
                 }
             }
         }
     }
 }
EDIT:
This is the inspector from the color picker color field 
This is the inspector from the main camera 
I can now enlarge it because I have set the clipping planes (near) to 0. Only if I now want a color near the edge does my block become black or gray.. How can i solve this?
Answer by ThePixelatedSword · Nov 22, 2018 at 11:05 AM
Maybe you only scaled up the color picker and not the rest of the variables. For example is the collider also at 2 scale? This could cause issue if not.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                