When our game’s ships move around, mouse aiming causes them to shake around very noticeably. The body being aimed is moved kinematically. I think we’ve narrowed it down to this block of mouse tracking code.
You can see around 0:35 where I disable the mouse tracking code momentarily, the ship stops shaking.
public static Quaternion RotateToMouse(this Ship ship, Transform transform, float ShipRotateSpeed)
{
// Generate a plane that intersects the transform's position with an upwards normal.
Plane playerPlane = new Plane(Vector3.up, Vector3.zero);
// Generate a ray from the cursor position
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
// Determine the point where the cursor ray intersects the plane.
// This will be the point that the object must look towards to be looking at the mouse.
// Raycasting to a Plane object only gives us a distance, so we'll have to take the distance,
// then find the point along that ray that meets that distance. This will be the point
// to look at.
float hitdist = 0.0f;
// If the ray is parallel to the plane, Raycast will return false.
if (playerPlane.Raycast (ray, out hitdist))
{
// Get the point along the ray that hits the calculated distance.
Vector3 targetPoint = ray.GetPoint(hitdist);
// Determine the target rotation. This is the rotation if the transform looks at the target point.
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
//rotate towards the target point.
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, ShipRotateSpeed);
transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
}
return transform.rotation;
}
The issue isn’t the fact that the plane is stationary, and it can’t be solved by rounding. We’ve got no idea what to do, and it’s driving us bananas. Help!
I'm sure that you're no longer watching this thread, but I'm having the exact same problem as you are. Would you mind providing the code you used to fix it?
– RogerTheJolly