Example #1
0
    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);
    }
Example #2
0
    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);
    }
Example #3
0
    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);
    }
Example #4
0
    IEnumerator AddForce(Animatable2 obj, Vector2 force, float duration)
    {
        float end = Time.time + duration;

        while (Time.time < end)
        {
            obj.rigidbody2D.AddForce(force);
            yield return(null);
        }
    }
Example #5
0
    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());
        }
    }
Example #6
0
    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);
    }
Example #7
0
 void Start()
 {
     anim = NoteFactory.CreateRect(rp);
 }