Ejemplo n.º 1
0
    void FixedUpdate()
    {
        if (Input.GetKey(KeyCode.Q))
        {
            RPMLeft += aceleracion * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.A))
        {
            RPMLeft -= aceleracion * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.E))
        {
            RPMRight += aceleracion * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.D))
        {
            RPMRight -= aceleracion * Time.deltaTime;
        }

        RPMLeft  = Mathf.Clamp(RPMLeft, maxRPM * -1, maxRPM);
        RPMRight = Mathf.Clamp(RPMRight, maxRPM * -1, maxRPM);

        var angVelLeft = MugettiPhysics.AngularVelocity(RPMLeft);
        var velLeft    = MugettiPhysics.AngularToLinearVelocity(angVelLeft, radioRuedas);

        var angVelRight = MugettiPhysics.AngularVelocity(RPMRight);
        var velRight    = MugettiPhysics.AngularToLinearVelocity(angVelRight, radioRuedas);


        MugettiPhysics.MVec2 vecZero;
        vecZero.X = 0.0f;
        vecZero.Y = 0.0f;

        MugettiPhysics.MVec2 leftSpeeds;
        leftSpeeds.X = Mathf.Cos(45 * Mathf.Deg2Rad) * velLeft;
        leftSpeeds.Y = Mathf.Sin(45 * Mathf.Deg2Rad) * velLeft;
        MugettiPhysics.MVec2 leftMovementVector = MugettiPhysics.MRU(0, Time.deltaTime, vecZero, leftSpeeds);
        if (leftMovementVector.X > 0.0f)
        {
            leftMovementVector.X *= -1.0f;
        }

        MugettiPhysics.MVec2 rightSpeeds;
        rightSpeeds.X = Mathf.Cos(45 * Mathf.Deg2Rad) * velRight;
        rightSpeeds.Y = Mathf.Sin(45 * Mathf.Deg2Rad) * velRight;
        MugettiPhysics.MVec2 rightMovementVector = MugettiPhysics.MRU(0, Time.deltaTime, vecZero, rightSpeeds);
        if (rightMovementVector.X < 0.0f)
        {
            rightMovementVector.X *= -1.0f;
        }

        Vector3 newPos = transform.position;

        newPos.x += leftMovementVector.X + rightMovementVector.X;
        newPos.y += leftMovementVector.Y + rightMovementVector.Y;
        Debug.Log("X: " + leftMovementVector.X + " " + rightMovementVector.X);
        Debug.Log("Y: " + leftMovementVector.Y + " " + rightMovementVector.Y);
        transform.position = newPos;
    }
Ejemplo n.º 2
0
    // Update is called once per frame
    void LateUpdate()
    {
        foreach (MCollider col1 in layer1)
        {
            MugettiPhysics.MVec2 col1Pos;
            col1Pos.X = col1.GetTransform().position.x;
            col1Pos.Y = col1.GetTransform().position.y;
            foreach (MCollider col2 in layer2)
            {
                bool collided = false;
                MugettiPhysics.MVec2 col2Pos;
                col2Pos.X = col2.GetTransform().position.x;
                col2Pos.Y = col2.GetTransform().position.y;
                if (col1.GetColType())
                {
                    MugettiPhysics.MVec2 col1Size;
                    col1Size.X = col1.GetWidth();
                    col1Size.Y = col1.GetHeightOrRadius();

                    if (col2.GetColType())
                    {
                        MugettiPhysics.MVec2 col2Size;
                        col2Size.X = col2.GetWidth();
                        col2Size.Y = col2.GetHeightOrRadius();

                        collided = MugettiPhysics.CheckBoxCollision(col1Pos, col1Size, col2Pos, col2Size);
                        //Debug.Log("A");
                    }
                    else
                    {
                        collided = MugettiPhysics.CheckBoxCircleCollision(col1Pos, col1Size, col2Pos, col2.GetHeightOrRadius());
                        //Debug.Log("B");
                    }
                }
                else
                {
                    if (col2.GetColType())
                    {
                        MugettiPhysics.MVec2 col2Size;
                        col2Size.X = col2.GetWidth();
                        col2Size.Y = col2.GetHeightOrRadius();

                        collided = MugettiPhysics.CheckBoxCircleCollision(col2Pos, col2Size, col1Pos, col1.GetHeightOrRadius());
                        //Debug.Log("C");
                    }
                    else
                    {
                        collided = MugettiPhysics.CheckCircleCollision(col1Pos, col1.GetHeightOrRadius(), col2Pos, col2.GetHeightOrRadius());
                        // Debug.Log("D");
                    }
                }
                if (collided)
                {
                    col1.OnColEnter.Invoke(); col2.OnColEnter.Invoke();
                }
            }
        }
    }
Ejemplo n.º 3
0
 void Start()
 {
     active          = false;
     initialtime     = 0;
     trailCounter    = 0;
     initialPosition = Vector3.zero;
     initialSpeeds   = Vector2.zero;
     MugettiPhysics.StateGravity(gravity);
     GetComponent <Collider>().OnColEnter.AddListener(Deactivate);
 }
Ejemplo n.º 4
0
 // Update is called once per frame
 void Update()
 {
     if ((IsLeft && GM.IsLeftTurn()) || (!IsLeft && !GM.IsLeftTurn()))
     {
         MugettiPhysics.MVec2 pos;
         MugettiPhysics.MVec2 speeds;
         pos.X    = transform.position.x;
         pos.Y    = transform.position.y;
         speeds.X = vel * Input.GetAxisRaw("Horizontal");
         speeds.Y = 0;
         var     movement = MugettiPhysics.MRU(0, Time.deltaTime, pos, speeds);
         Vector3 newPos   = new Vector3(movement.X, movement.Y, transform.position.z);
         transform.position = newPos;
     }
 }
Ejemplo n.º 5
0
    void FixedUpdate()
    {
        MugettiPhysics.MVec2 speeds;
        speeds.X = 0;
        speeds.Y = speed * -1;
        MugettiPhysics.MVec2 vecZero;
        vecZero.X = 0;
        vecZero.Y = 0;

        MugettiPhysics.MVec2 movement = MugettiPhysics.MRU(0, Time.deltaTime, vecZero, speeds);
        Vector3 newPos = transform.position;

        newPos.y          += movement.Y;
        transform.position = newPos;
    }
Ejemplo n.º 6
0
 void Update()
 {
     if (active)
     {
         if (transform.position.y <= 0)
         {
             Deactivate();
             return;
         }
         MugettiPhysics.MVec2 initPos;
         initPos.X = initialPosition.x;
         initPos.Y = initialPosition.y;
         MugettiPhysics.MVec2 initSpds;
         initSpds.X = initialSpeeds.x;
         initSpds.Y = initialSpeeds.y;
         MugettiPhysics.MVec2 newPos = MugettiPhysics.TiroOblicuo(initialtime, Time.time, initPos, initSpds);
         Vector3 newPosition         = transform.position;
         newPosition.x      = newPos.X;
         newPosition.y      = newPos.Y;
         transform.position = newPosition;
         Trail(newPosition);
     }
 }