public void RotToTarget(DynamicTarget tgt) { Vector3 tmpTGT = tgt.NoTarget ? (Vector3)OrigRef : pivot.InverseTransformPoint(tgt.Position); Vector2 target = new Vector2(tmpTGT.x, tmpTGT.y); float angle = Mathf.Deg2Rad * Vector2.Angle(Vector2.up, target); if (angle == 0) return; angle = Mathf.Clamp(increment * TimeWarp.fixedDeltaTime, 0, angle); if (target.x > 0) { angle = -angle; } if (!fullcircle) { tmpTGT = OrigRef; target = new Vector2(tmpTGT.x, tmpTGT.y); float angleRef = Mathf.Deg2Rad * Vector2.Angle(Vector2.up, target); if (target.x > 0) { angleRef = -angleRef; } angle = Mathf.Clamp(angle, angleRef - angleMinus, angleRef + anglePlus); if (angle == 0) return; } pivot.RotateAround(pivot.forward, angle); }
public void RotToTarget(DynamicTarget tgt) { Vector3 tmpTGT = tgt.NoTarget ? (Vector3)OrigRef : pivot.InverseTransformPoint(tgt.Position); Vector2 target = new Vector2(tmpTGT.x, tmpTGT.y); float angle = Mathf.Deg2Rad * Vector2.Angle(Vector2.up, target); if (angle == 0) { return; } angle = Mathf.Clamp(increment * TimeWarp.fixedDeltaTime, 0, angle); if (target.x > 0) { angle = -angle; } if (!fullcircle) { tmpTGT = OrigRef; target = new Vector2(tmpTGT.x, tmpTGT.y); float angleRef = Mathf.Deg2Rad * Vector2.Angle(Vector2.up, target); if (target.x > 0) { angleRef = -angleRef; } angle = Mathf.Clamp(angle, angleRef - angleMinus, angleRef + anglePlus); if (angle == 0) { return; } } pivot.RotateAround(pivot.forward, angle); }