void FixedUpdate() { if (target == null) { target = GameObject.FindGameObjectWithTag("Player").transform; if (target == null) { return; } } var myAngle = RotationHelper.GetAngleFromQuaternion(transform.rotation); var angleToTarget = RotationHelper.GetAngleFromToTarget(transform.position, target.position); var diff = RotationHelper.GetDifferenceBetweenAngles(myAngle, angleToTarget); float nextAngle = transform.rotation.eulerAngles.z; if (diff > 0) { var mod = turnSpeed * Time.fixedDeltaTime; if (mod > diff) { mod = diff; } nextAngle += mod; } else if (diff < 0) { var mod = turnSpeed * Time.fixedDeltaTime; if (mod < diff) { mod = diff; } nextAngle -= mod; } myRigidBody.MoveRotation(nextAngle); moveScript.Move(Time.fixedDeltaTime); }