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.