- 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-)