The code gives room for variation, to allow different angles, and the cubes use trail renderer.
using UnityEngine; using System.Collections; public class Orbit : MonoBehaviour { public GameObject Target; public Vector3 direction = Vector3.left; public float Speed = 0.1f; public bool Randomize = false; public float RandomizeMin = -0.5f; public float RandomizeMax = 0.5f; public float MaxDistance = 5; public float MinDistance = 1; void Update () { this.transform.LookAt(Target.transform); var shift = Vector3.zero; if (Randomize) { shift = new Vector3(Random.Range (RandomizeMin, RandomizeMax), Random.Range (RandomizeMin, RandomizeMax) * Time.deltaTime, Random.Range (RandomizeMin, RandomizeMax)); } this.transform.Translate ((shift + direction) * Speed * Time.deltaTime); if (Vector3.Distance(Target.transform.position, transform.position) > MaxDistance) { Debug.Log ("To Far"); this.transform.position = this.Target.transform.position + Vector3.ClampMagnitude( this.transform.position - this.Target.transform.position, this.MaxDistance); } if (Vector3.Distance(Target.transform.position, transform.position) < MinDistance) { Debug.Log ("To Close"); this.transform.position = this.Target.transform.position + Vector3.ClampMagnitude( (this.transform.position - this.Target.transform.position) * 100, this.MinDistance); } } }