Animatable2 CreateObject(Vector2 position, float rotation, float width, float height) { var obj = Animatable2.Instantiate(prefab, position, Quaternion.Euler(0, 0, rotation)); obj.localScale = new Vector2(width, height); return(obj); }
IEnumerator CreateAndMoveObjects(int count) { var objects = new Animatable2[count]; // Create Objects for (int i = 0; i < count; i++) { var width = objectWidth.RandomValue(); var height = objectHeight.RandomValue(); var entryAngle = objectEntryAngle.RandomValue(); var distanceFromOrigin = cameraDiameter / 2 + Mathf.Sqrt(width * width + height * height) / 2; var objectPos = Quaternion.Euler(0, 0, entryAngle) * (Vector2.up * distanceFromOrigin + new Vector2(objectPositionRange.x * Random.value - objectPositionRange.x / 2, objectPositionRange.y * Random.value - objectPositionRange.y / 2)); var rotation = Quaternion.Euler(0, 0, objectInitialAngle.RandomValue()); //Quaternion.Euler(0, 0, entryAngle); var target = GameObject.Instantiate <Animatable2>(objectPrefab, objectPos, rotation); target.localScale = new Vector2(width, height); //target.pivot = new Vector2(0.5f, 0); objects[i] = target; } foreach (var cell in cells) { StartCoroutine(RunCell(cell, objects)); } yield return(true); }
public void Initialize(GridRect rect, Board1 board) { //Debug.Log($"Creating GraphicEntity: {rect}"); this.board = board; this.rect = rect; board.LockTiles(rect, this); var rectParams = board.GridRectToRectParams(rect); animatable = NoteFactory.CreateRect(rectParams); }
IEnumerator AddForce(Animatable2 obj, Vector2 force, float duration) { float end = Time.time + duration; while (Time.time < end) { obj.rigidbody2D.AddForce(force); yield return(null); } }
IEnumerator Centripetal(Animatable2 obj, float radius, float duration) { float end = Time.time + duration; var rgbd = obj.rigidbody2D; var speed = obj.rigidbody2D.velocity.magnitude; var period = (Mathf.PI * 2 * radius / speed); rgbd.angularVelocity = 360 / period; while (Time.time < end) { var velocity = obj.rigidbody2D.velocity; var forceMagnitude = speed * speed / radius; var forceDirection = Quaternion.Euler(0, 0, 90) * velocity.normalized * forceMagnitude; obj.rigidbody2D.AddForce(forceDirection); obj.rigidbody2D.velocity = Vector3.ClampMagnitude(velocity, speed); yield return(new WaitForFixedUpdate()); } }
public static Animatable2[] CreateLine(SplineParams sp, MotionParams mp = new MotionParams()) { int parts = 1400; var anims = new Animatable2[parts]; for (int i = 0; i < parts; i++) { float t = i / (float)parts; var p = sp.spline.GetPoint(t); var d = sp.spline.GetDirection(t); var v = sp.spline.GetVelocity(t); var anim = CreateRect(new RectParams { width = v.magnitude / 15, color = sp.color, position = p, height = sp.width * v.magnitude / 15, rotation = d.AngleInDegrees() }); anims[i] = anim; } return(anims); //return null;//p.gameObject.AddComponent<Animatable2>(); //return CreateRect(lp.ToRectParams(), mp); }
void Start() { anim = NoteFactory.CreateRect(rp); }