Continuously move ball on screen (561590)

For my 2D game, I want to move ball continuously on screen. At present, I have following code to work.

public class BallMovement : MonoBehaviour
{
     private bool isStartMoving;
     private Vector3 direction;
     private float speed = 20f;
     void Start ()
     {
         InitializeValues ();
         ScaleUpAnimation ();
     }
     private void InitializeValues ()
     {
         float xDirection = Random.Range (0, 2) * 2 - 1;
         float yDirection = Random.Range (0, 2) * 2 - 1;
         direction = new Vector3 (xDirection * speed, yDirection * speed, 0f);
     }
     private void ScaleUpAnimation ()
     {
         iTween.ScaleTo (gameObject, iTween.Hash ("x", 2f, "y", 2f, "time", 1f, "delay", 0.5f, "oncomplete", "ScaleDownAnimation",
                                                  "oncompletetarget", gameObject, "easetype", iTween.EaseType.linear));
     }
     private void ScaleDownAnimation ()
     {
         iTween.ScaleTo (gameObject, iTween.Hash ("x", 1f, "y", 1f, "time", 1f, "oncomplete", "ScaleDownComplete",
                                                  "oncompletetarget", gameObject, "easetype", iTween.EaseType.linear));
     }
     private void ScaleDownComplete ()
     {
         rigidbody2D.velocity = direction;
         isStartMoving = true;
     }
     void FixedUpdate ()
     {
         if (isStartMoving) {
             rigidbody2D.velocity = direction * speed * Time.deltaTime;
         }
     }
     void OnCollisionEnter2D (Collision2D otherCollision)
     {
         Vector3 normal = otherCollision.contacts [0].normal;
         direction = Vector3.Reflect (direction, normal);
     }
}

Using above code, I can able to move ball continuous on screen but it showing some what jerk in its movement. I want to use ball in collision detection also. If I use transform then it might possible that it didn’t reply correctly in collision detection. Not looking smooth moving. I want some suggestions to move ball smoothly on screen.

if you dont have it already, rigidbody2d interpolate set to interpolate

1 Like

Yes, you are right in this. Ball movement is become smoother setting interpolate value.
If I want to move ball using same speed continuously then any other logic available other than I have written.
Because at present collision detection behaves abnormally in some condition.

If you have then please share it.