transform.up returns a bad angle

52178-oddangle.jpg

Vector3 dir = PlayerScript.instance.transform.position - transform.position;
		dir.z = 0f;

		float angleDir = (Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg) - 90f;
		transform.rotation = Quaternion.AngleAxis(angleDir, Vector3.forward);
		mBeamStartDir = transform.rotation * Quaternion.AngleAxis(mBeamSweepAngle * 0.5f, Vector3.forward);

		transform.rotation = mBeamStartDir;

		mBeamTargetPos = transform.up * mBeamDistance;
		Debug.DrawLine(transform.position, mBeamTargetPos, Color.white, 20.0f);

well for some reason the system decides that transform.up should point elsewhere instead of local up.

basically what i have is a beam that starts from one side then sweeps over to the other side.
interestingly the transform.up is always offset towards the center of the starting and ending rotation angles.

anyone’s got any ideas?

nevermind, got it figured out. apparently i missed a step to convert from localspace to worldspace, namely

mBeamTargetPos = transform.position - (-transform.up * mBeamDistance);

bummer.