Hey guys, 4th post. I'm picking up more and more of Unity scripting as I'm going, and now I come asking not for advice on how to begin coding something, but rather advice making a minor correction to something I've created already.
The game mechanic in question is camera rotation - more specifically, orbiting the camera around the (perceived) center of the screen. It's to be a strategy-style camera. It already pans, and rotates correctly, although it previously rotated one direction by pressing and holding the RMB. The code that achieved this is as follows:
private var targetPosition : Vector3;
if (Input.GetMouseButtonDown(1)) { targetPosition = transform.position;
targetPosition += transform.forward * 27; }
} if (Input.GetMouseButton(1)) transform.RotateAround(targetPosition,Vector3.up,50*Time.deltaTime);
Now while this worked wonderfully, I'd like the camera to rotateAround (only horizontally) by dragging the mouse with the RMB held down, left and right. The code below works, to a degree, but doesn't limit it to the horizontal axis, instead going (pardon the expression) 'mental' vertically and horizontally.
I just can't for the life of me find a way to restrict to the horizontal axis that doesn't result in a syntax error!
Here's the nearly-operable code:
var rmbDownPoint : Vector2;
var mouseRightDrag : boolean = false;
private var targetPosition : Vector3;
// Right Mouse Hold
if (Input.GetMouseButton(1)) {
Screen.showCursor = false;
} else {
Screen.showCursor = true;
}
//Move mouse left or right with RMB held
if (Input.GetMouseButtonDown(1))
{
rmbDownPoint = Input.mousePosition;
mouseRightDrag = true;
}
if (mouseRightDrag)
{
var dragDifference : Vector2 = rmbDownPoint - Input.mousePosition;
targetPosition += transform.forward * 27;
transform.RotateAround(targetPosition,Vector3.up+dragDifference ,50*Time.deltaTime);
}
if(Input.GetMouseButtonUp(1))
{
mouseRightDrag = false;
}