- Home /
 
LookAt on one axis
Hello :)
I have a cube i want to look at the position where the mouse clicks (using a raycasthit and a plane in front of the camera with no mesh renderer) but only on the x axis...the problem with my code is that the cube will look at the mouse cursor, unless i click behind it, then it doesn't look.
I've tried it by setting the rotation that i DON'T want to move.
     var direction : Vector3;
 
 function Update () {
 
 if(Input.GetButtonDown("Shoot2"))
  {  
  
  var hit : RaycastHit;
  if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), hit))
  
        {
                 
                 direction = (hit.point);
 
              transform.LookAt(direction);
 
  }
  
  }
  
           transform.eulerAngles.y = 90;  
  transform.eulerAngles.z = 0;
     
 }
 
               Anyone know a way that works? Thanks :)
Answer by Seth-Bergman · Jul 28, 2012 at 12:25 AM
Here, I basically got this from here:
http://answers.unity3d.com/questions/262662/2d-sprite-rotation-towards-mouse.html
this is tested, works perfectly :)
 var direction : Vector3;
 
 function Update(){
 if (Input.GetButton("Fire1"))
          {
           var  cameraDif = Camera.main.transform.position.y - transform.position.y;
           var mouseX = Input.mousePosition.x;
           var    mouseY = Input.mousePosition.y;
           var    mWorldPos = Camera.main.ScreenToWorldPoint( new Vector3(mouseX, mouseY, cameraDif));
           var  mainPos = transform.position;   
           var diffX = mWorldPos.x - mainPos.x;
           var   diffY = mWorldPos.y - mainPos.y;    
           var angle = Mathf.Atan2(diffY, diffX) * Mathf.Rad2Deg;
              transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle + 90));
              }
              }
 
              Answer by Tea_Doogun · Jul 28, 2012 at 10:14 AM
Thanks for the reply, man :)
Gonna see if i can figure out how the code works before i use it so i can keep learning, but you have ended my frustration and stopped me from crying like a little girl.
B-)
Your answer