Exemplo n.º 1
0
        // Methods
        public Player(World world_, Texture2D cowTexture_, Texture2D texture_, Texture2D ButtonTexture, Vector2 ButtonPosition, float ButtonRotation, EntityStruct entityStruct_, float speed_, Quadrent quadrent_, int id_ = 999)
        {
            // Player constructor
            // ================
            m_vehicle     = new Vehicle(world_, texture_, entityStruct_);
            m_cow         = new Sprite(cowTexture_, entityStruct_.GetPosition(), entityStruct_.GetRotationDegrees(), new Vector2(0.1f, 0.1f));
            m_ReadyButton = new Button(ButtonTexture, ButtonPosition);
            m_ReadyButton.m_sprite.SetRotationDegrees(ButtonRotation);

            m_controlScheme = new ControlScheme(quadrent_);
            m_playerID      = id_;

            m_currentCheckpoint = Checkpoint.First(Vector2.Zero);
            m_currentLap        = 1;
            m_finished          = false;

            m_ReadyUp = false;
        }
Exemplo n.º 2
0
        private SoundEffectInstance go, carbrake; // ADDED

        // Methods
        public Vehicle(World world_, Texture2D texture_, EntityStruct entityStruct_)
        {
            // Vehicle constructor
            // ================

            // Initialise the vehicle's main body
            m_vehicleBody = new Entity(world_, texture_, entityStruct_.GetPosition(), 0, BodyType.Dynamic, 10, 0.1f);

            m_vehicleBody.GetBody().AngularDamping = 1;
            m_vehicleBody.GetBody().LinearDamping  = 1;

            // Initialise the vehicle's wheels
            Vector2 frontLeftPosition = FarseerPhysics.ConvertUnits.ToDisplayUnits(m_vehicleBody.GetPosition()) + new Vector2(-m_vehicleBody.GetSprite().GetWidth() / 2, -m_vehicleBody.GetSprite().GetHeight() / 2);

            m_vehicleTyres.Add(new Tyre(System.Input.Quadrent.TOP_LEFT, world_, frontLeftPosition, m_vehicleBody.GetRotationDegrees()));

            Vector2 frontRightPosition = FarseerPhysics.ConvertUnits.ToDisplayUnits(m_vehicleBody.GetPosition()) + new Vector2(m_vehicleBody.GetSprite().GetWidth() / 2, -m_vehicleBody.GetSprite().GetHeight() / 2);

            m_vehicleTyres.Add(new Tyre(System.Input.Quadrent.TOP_RIGHT, world_, frontRightPosition, m_vehicleBody.GetRotationDegrees()));

            Vector2 backLeftPosition = FarseerPhysics.ConvertUnits.ToDisplayUnits(m_vehicleBody.GetPosition()) + new Vector2(-m_vehicleBody.GetSprite().GetWidth() / 2, m_vehicleBody.GetSprite().GetHeight() / 2);

            m_vehicleTyres.Add(new Tyre(System.Input.Quadrent.BOTTOM_LEFT, world_, backLeftPosition, m_vehicleBody.GetRotationDegrees()));

            Vector2 backRightPosition = FarseerPhysics.ConvertUnits.ToDisplayUnits(m_vehicleBody.GetPosition()) - new Vector2(m_vehicleBody.GetSprite().GetWidth() / 2, m_vehicleBody.GetSprite().GetHeight() / 2);

            m_vehicleTyres.Add(new Tyre(System.Input.Quadrent.BOTTOM_RIGHT, world_, backRightPosition, m_vehicleBody.GetRotationDegrees()));

            // Create joints for each of the wheels to the body
            // Front Left
            m_frontLeftJoint = JointFactory.CreateRevoluteJoint(world_,
                                                                m_vehicleBody.GetBody(),
                                                                m_vehicleTyres[0].GetBody(),
                                                                FarseerPhysics.ConvertUnits.ToSimUnits(new Vector2(-m_vehicleBody.GetSprite().GetWidth() / 2 * 0.8f, -m_vehicleBody.GetSprite().GetHeight() / 2 * 0.7f)),
                                                                Vector2.Zero, false);
            m_frontLeftJoint.LowerLimit     = Util.DegreesToRadians(-10);
            m_frontLeftJoint.UpperLimit     = Util.DegreesToRadians(10);
            m_frontLeftJoint.LimitEnabled   = true;
            m_frontLeftJoint.MotorEnabled   = true;
            m_frontLeftJoint.MaxMotorTorque = 100;

            // Front right
            m_frontRightJoint = JointFactory.CreateRevoluteJoint(world_,
                                                                 m_vehicleBody.GetBody(),
                                                                 m_vehicleTyres[1].GetBody(),
                                                                 FarseerPhysics.ConvertUnits.ToSimUnits(new Vector2(m_vehicleBody.GetSprite().GetWidth() / 2 * 0.8f, -m_vehicleBody.GetSprite().GetHeight() / 2 * 0.7f)),
                                                                 Vector2.Zero, false);
            m_frontRightJoint.LowerLimit     = Util.DegreesToRadians(-10);
            m_frontRightJoint.UpperLimit     = Util.DegreesToRadians(10);
            m_frontRightJoint.LimitEnabled   = true;
            m_frontRightJoint.MotorEnabled   = true;
            m_frontRightJoint.MaxMotorTorque = 100;

            // Back left
            m_backLeftJoint = JointFactory.CreateRevoluteJoint(world_,
                                                               m_vehicleBody.GetBody(),
                                                               m_vehicleTyres[2].GetBody(),
                                                               FarseerPhysics.ConvertUnits.ToSimUnits(new Vector2(-m_vehicleBody.GetSprite().GetWidth() / 2 * 0.8f, m_vehicleBody.GetSprite().GetHeight() / 2 * 0.7f)),
                                                               Vector2.Zero, false);
            m_backLeftJoint.LowerLimit   = 0;
            m_backLeftJoint.UpperLimit   = 0;
            m_backLeftJoint.LimitEnabled = true;

            // Back right
            m_backRightJoint = JointFactory.CreateRevoluteJoint(world_,
                                                                m_vehicleBody.GetBody(),
                                                                m_vehicleTyres[3].GetBody(),
                                                                FarseerPhysics.ConvertUnits.ToSimUnits(new Vector2(m_vehicleBody.GetSprite().GetWidth() / 2 * 0.8f, m_vehicleBody.GetSprite().GetHeight() / 2 * 0.7f)),
                                                                Vector2.Zero, false);
            m_backLeftJoint.LowerLimit    = 0;
            m_backLeftJoint.UpperLimit    = 0;
            m_backRightJoint.LimitEnabled = true;

            m_vehicleBody.SetRotationDegrees(entityStruct_.GetRotationDegrees());
            m_vehicleBody.UpdateSprites();

            // AUDIO

            //TouchPanel.EnableMouseTouchPoint = true;//ADDED
            go       = AudioHandler.vehicleEngine.CreateInstance(); //ADDED
            carbrake = AudioHandler.vehicleBrake.CreateInstance();  //ADDED
        }