Exemple #1
0
        /// <summary>
        /// Initialize actor
        /// </summary>
        /// <param name="ship">The ship the character is on.</param>
        /// <param name="life"></param>
        public void Initialize(Ship ship, int life)
        {
            //Set character's life
            m_Life     = life;
            m_LastShip = ship;

            //Get character's position
            Vector3 Position = ship.GetCenterTop();

            Position.Y += 25.0f;

            //Calls parent initialization
            Initialize(Global.ACTOR_MODEL, true, Position.X, Position.Y, Position.Z);

            //Set model animation
            m_Model.CurrentAnimation = Global.ACTOR_ANIMATIONS[1];
            m_Camera.X = 0;
            m_Camera.Z = 0;

            //Set camera orientation
            m_Camera.RotationX = 0;
            m_Camera.RotationY = (float)Math.PI;
            m_Camera.RotationZ = 0;

            //Attach light
            m_Light.Position    = m_Model.Position;
            m_Light.Position.Y += 5.0f;
            m_Light.Position.Z += 5.0f;
            m_Light.AttachTo(m_Model, true);
        }
Exemple #2
0
        /// <summary>
        /// Initialize actor
        /// </summary>
        /// <param name="ship">The ship the character is on.</param>
        /// <param name="life"></param>
        public void Initialize(Ship ship, int life)
        {
            //Set character's life
            m_Life      = life;
            m_LastShip  = ship;

            //Get character's position
            Vector3 Position  = ship.GetCenterTop();
            Position.Y		 += 25.0f;

            //Calls parent initialization
            Initialize(Global.ACTOR_MODEL, true, Position.X, Position.Y, Position.Z);

            //Set model animation
            m_Model.CurrentAnimation = Global.ACTOR_ANIMATIONS[1];
            m_Camera.X = 0;
            m_Camera.Z = 0;

            //Set camera orientation
            m_Camera.RotationX = 0;
            m_Camera.RotationY = (float)Math.PI;
            m_Camera.RotationZ = 0;

            //Attach light
            m_Light.Position	= m_Model.Position;
            m_Light.Position.Y += 5.0f;
            m_Light.Position.Z += 5.0f;
            m_Light.AttachTo(m_Model, true);
        }
Exemple #3
0
        /// <summary>
        /// Updates the actor.
        /// </summary>
        /// <param name="time">Time data</param>
        public override void Update(GameTime time)
        {
            //Get time difference
            float Difference = time.ElapsedGameTime.Milliseconds / 1000.0f;

            //Apply gravity
            m_Model.YAcceleration = -Global.GAME_GRAVITY;

            //Moves and rotate character
            m_Model.Position += m_Movement * Global.ACTOR_VELOCITY * Difference;
            if (m_Movement.LengthSquared() > 0)
            {
                m_Model.RotationY = (float)Math.Atan2(m_Movement.X, m_Movement.Z);
            }

            //If under certain limit
            if (m_Model.Position.Y <= Global.GAME_FALLLIMIT)
            {
                //Reset stuff
                m_Jumping                = false;
                m_Model.YVelocity        = 0.0f;
                m_Model.CurrentAnimation = "Walking";

                //Reduce life
                m_Life--;

                //Return to last ship visited
                m_Model.Position    = m_LastShip.GetCenterTop();
                m_Model.Position.Y += 5.0f;
            }

            //Updates direction
            m_Forward = Vector3.Transform(m_Forward, Matrix.CreateRotationY(m_RotationX));
            m_Sideway = Vector3.Transform(m_Sideway, Matrix.CreateRotationY(m_RotationX));

            //Updates camera
            m_Camera.Position = m_Model.Position -
                                (m_Forward * Global.ACTORCAM_DISTANCE) +
                                new Vector3(0, Global.ACTORCAM_HEIGHT, 0);
            m_Camera.RotationX += m_RotationY;
            m_Camera.RotationY += m_RotationX;

            //Limits camera
            if (m_Camera.RotationX > Math.PI && m_Camera.RotationX < Math.PI * 1.5f)
            {
                m_Camera.RotationX = (float)(Math.PI * 1.5f);
            }
            else if (m_Camera.RotationX > Global.GAME_CAMLIMIT && m_Camera.RotationX <= Math.PI)
            {
                m_Camera.RotationX = Global.GAME_CAMLIMIT;
            }

            //Jump with space);
            if (InputManager.Keyboard.KeyDown(Keys.Space) && !m_Jumping)
            {
                //Set animation
                m_Model.CurrentAnimation = "Jumping";

                //Start jumping
                m_Model.YVelocity = Global.ACTOR_JUMPING;
                m_Jumping         = true;
            }
        }