void FixedUpdate() { // Follows enemies, i.e. it only works for friendly bullets if (follow) { GameObject target = StageHandler.GetClosestEnemy(transform.position); if (target != null) { // The magnitude of the cross product provides rotation amount float rot = Vector3.Cross(transform.up, Vector3.Normalize(target.transform.position - transform.position)).z; transform.Rotate(Vector3.forward, rot * rotSpeed * Time.fixedDeltaTime); } } // Use Vector3 instead of transform.right because of the relativeTo parameter transform.Translate(Vector3.up * speed * Time.fixedDeltaTime); // Kill if out of bounds, more reliable than edge colliders if (!StageHandler.InStageBounds(transform.position)) { Object.Destroy(gameObject); } }